You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.2 KiB
42 lines
1.2 KiB
import jwt
|
|
import requests
|
|
from datetime import datetime, timedelta
|
|
|
|
from selfdrive.version import version
|
|
|
|
class Api():
|
|
def __init__(self, dongle_id):
|
|
self.dongle_id = dongle_id
|
|
with open('/persist/comma/id_rsa') as f:
|
|
self.private_key = f.read()
|
|
|
|
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):
|
|
now = datetime.utcnow()
|
|
payload = {
|
|
'identity': self.dongle_id,
|
|
'nbf': now,
|
|
'iat': now,
|
|
'exp': now + timedelta(hours=1)
|
|
}
|
|
return jwt.encode(payload, self.private_key, algorithm='RS256').decode('utf8')
|
|
|
|
def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
|
|
backend = "https://api.commadotai.com/"
|
|
|
|
headers = {}
|
|
if access_token is not None:
|
|
headers['Authorization'] = "JWT "+access_token
|
|
|
|
headers['User-Agent'] = "openpilot-" + version
|
|
|
|
return requests.request(method, backend+endpoint, timeout=timeout, headers = headers, params=params)
|
|
|
|
|