Files
dragonpilot/common/api/__init__.py

43 lines
1.2 KiB
Python
Raw Normal View History

2019-08-13 01:36:45 +00:00
import jwt
2016-11-29 18:34:21 -08:00
import requests
2019-08-13 01:36:45 +00:00
from datetime import datetime, timedelta
2016-11-29 18:34:21 -08:00
2017-06-28 13:57:09 -07:00
from selfdrive.version import version
2019-10-09 18:43:53 +00:00
class Api():
2019-09-09 23:03:02 +00:00
def __init__(self, dongle_id):
2019-08-13 01:36:45 +00:00
self.dongle_id = dongle_id
2019-09-09 23:03:02 +00:00
with open('/persist/comma/id_rsa') as f:
self.private_key = f.read()
2019-08-13 01:36:45 +00:00
def get(self, *args, **kwargs):
return self.request('GET', *args, **kwargs)
def post(self, *args, **kwargs):
return self.request('POST', *args, **kwargs)
def request(self, method, endpoint, timeout=None, access_token=None, **params):
return api_get(endpoint, method=method, timeout=timeout, access_token=access_token, **params)
def get_token(self):
2019-09-09 23:03:02 +00:00
now = datetime.utcnow()
payload = {
'identity': self.dongle_id,
'nbf': now,
'iat': now,
'exp': now + timedelta(hours=1)
}
2019-10-09 18:43:53 +00:00
return jwt.encode(payload, self.private_key, algorithm='RS256').decode('utf8')
2019-08-13 01:36:45 +00:00
2017-05-11 12:41:17 -07:00
def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
2016-11-29 18:34:21 -08:00
backend = "https://api.commadotai.com/"
2017-05-11 12:41:17 -07:00
headers = {}
if access_token is not None:
headers['Authorization'] = "JWT "+access_token
2017-06-28 13:57:09 -07:00
headers['User-Agent'] = "openpilot-" + version
2017-05-11 12:41:17 -07:00
return requests.request(method, backend+endpoint, timeout=timeout, headers = headers, params=params)
2016-11-29 18:34:21 -08:00