kurjerzy-labelifier/kurjerzy.py
2020-05-20 19:42:08 +02:00

57 lines
1.7 KiB
Python

import requests
import time
class Kurjerzy:
def __init__(self, app):
self.base_url = 'https://www.kurjerzy.pl/graphql'
self.session = requests.Session()
self.app = app
self.email = None
def __repr__(self):
return '<Kurjerzy %r>' % (self.email,)
def send_query(self, query, variables={}):
resp = self.session.post(self.base_url, json={
'query': query,
'variables': variables,
})
resp.raise_for_status()
return resp.json()
def set_token(self, token):
self.session.headers.update({"Authorization": "Bearer %s" % (token['token'],)})
def login(self, email, password):
resp = self.send_query(r'''
mutation ($email: String, $password: String) {
createToken(
email: $email,
password: $password
) {
token,
expire,
expireHuman
}
}
''', {'email': email, 'password': password})
if resp['data']['createToken']:
return resp['data']['createToken']
def shipment_info(self, id):
result = self.send_query(r'query($id: Int) { shipments(ids:[$id]) { labelSource, numberParcel, status, tracking { booked, collected, inDelivery, delivered, returned, statuses } } }', {
'id': id,
})
try:
return result['data']['shipments'][0]
except IndexError:
return None
if __name__ == '__main__':
k = Kurjerzy({})
print(k.login('...', '...'))
print(k.send_query(r'query {shipments{id,status,number,labelRef,labelSource,params{content}}}'))