py-graphql-client 0.1.2

Last updated:

0 purchases

py-graphql-client 0.1.2 Image
py-graphql-client 0.1.2 Images
Add to Cart

Description:

pygraphqlclient 0.1.2

py-graphql-client
Dead-simple to use GraphQL client over websocket. Using the
apollo-transport-ws
protocol.
Install
pip install py-graphql-client

Examples
Setup subscriptions super easily
from graphql_client import GraphQLClient

query = """
subscription {
notifications {
id
title
content
}
}
"""

with GraphQLClient('ws://localhost:8080/graphql') as client:

sub_id = client.subscribe(query, callback=callback)
# do other stuff
# ...
# later stop the subscription
client.stop_subscribe(sub_id)

def callback(_id, data):
print("got new data..")
print(f"msg id: {_id}. data: {data}")

Variables can be passed
from graphql_client import GraphQLClient

query = """
subscription ($limit: Int!) {
notifications (order_by: {created: "desc"}, limit: $limit) {
id
title
content
}
}
"""

with GraphQLClient('ws://localhost:8080/graphql') as client:
sub_id = client.subscribe(query, variables={'limit': 10}, callback=callback)
# ...

def callback(_id, data):
print("got new data..")
print(f"msg id: {_id}. data: {data}")

Headers can be passed too
from graphql_client import GraphQLClient

query = """
subscription ($limit: Int!) {
notifications (order_by: {created: "desc"}, limit: $limit) {
id
title
content
}
}
"""

with GraphQLClient('ws://localhost:8080/graphql') as client:
sub_id = client.subscribe(query,
variables={'limit': 10},
headers={'Authorization': 'Bearer xxxx'},
callback=callback)
...
client.stop_subscribe(sub_id)

def callback(_id, data):
print("got new data..")
print(f"msg id: {_id}. data: {data}")

Normal queries and mutations work too
from graphql_client import GraphQLClient

query = """
query ($limit: Int!) {
notifications (order_by: {created: "desc"}, limit: $limit) {
id
title
content
}
}
"""

with GraphQLClient('ws://localhost:8080/graphql') as client:
res = client.query(query, variables={'limit': 10}, headers={'Authorization': 'Bearer xxxx'})
print(res)

Without the context manager API
from graphql_client import GraphQLClient

query = """
query ($limit: Int!) {
notifications (order_by: {created: "desc"}, limit: $limit) {
id
title
content
}
}
"""

client = GraphQLClient('ws://localhost:8080/graphql')
res = client.query(query, variables={'limit': 10}, headers={'Authorization': 'Bearer xxxx'})
print(res)
client.close()

TODO

support http as well
should use asyncio websocket library?

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.