57 lines
1.7 KiB
Python
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}}}'))
|