py-graphql-client 0.1.2

Creator: railscoderz

Last updated:

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.