Trying to make session embeddable
This commit is contained in:
@@ -21,8 +21,12 @@ class HttpClientException(ClientException):
|
||||
|
||||
|
||||
class Client():
|
||||
def __init__(self, username, api_key) -> None:
|
||||
def __init__(self, username, api_key, session=None) -> None:
|
||||
self.host = "https://api.rapt.io"
|
||||
if session is None:
|
||||
self.session = aiohttp.ClientSession()
|
||||
else:
|
||||
self.session = session
|
||||
self.username = username
|
||||
self.api_key = api_key
|
||||
self.token = None
|
||||
@@ -30,23 +34,21 @@ class Client():
|
||||
self.expires = None
|
||||
|
||||
async def get_jwt_token(self):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
url = "https://id.rapt.io/connect/token"
|
||||
async with session.post(url, data={
|
||||
"client_id": "rapt-user",
|
||||
"grant_type": "password",
|
||||
"username": self.username,
|
||||
"password": self.api_key
|
||||
}) as response:
|
||||
|
||||
response_json = await response.json()
|
||||
if response.status == 200:
|
||||
self.token = response_json["access_token"]
|
||||
self.expires_seconds = response_json["expires_in"]
|
||||
self.expires = datetime.now() + timedelta(seconds=self.expires_seconds)
|
||||
logger.trace("Expires: " + str(self.expires))
|
||||
else:
|
||||
raise HttpClientException(response.reason, response.status)
|
||||
url = "https://id.rapt.io/connect/token"
|
||||
async with self.session.post(url, data={
|
||||
"client_id": "rapt-user",
|
||||
"grant_type": "password",
|
||||
"username": self.username,
|
||||
"password": self.api_key
|
||||
}) as response:
|
||||
response_json = await response.json()
|
||||
if response.status == 200:
|
||||
self.token = response_json["access_token"]
|
||||
self.expires_seconds = response_json["expires_in"]
|
||||
self.expires = datetime.now() + timedelta(seconds=self.expires_seconds)
|
||||
logger.trace("Expires: " + str(self.expires))
|
||||
else:
|
||||
raise HttpClientException(response.reason, response.status)
|
||||
|
||||
async def get_auth_headers(self):
|
||||
if self.expires is not None:
|
||||
@@ -58,13 +60,11 @@ class Client():
|
||||
|
||||
async def get_json(self, url, parameters):
|
||||
headers = await self.get_auth_headers()
|
||||
logger.trace("HEADERS: " + str(headers))
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url, headers=headers, params=parameters) as response:
|
||||
|
||||
response_json = await response.json()
|
||||
logger.trace(response.request_info.url)
|
||||
if response.status == 200:
|
||||
return response_json
|
||||
else:
|
||||
raise HttpClientException(response.reason, response.status)
|
||||
logger.trace("HEADERS: " + str(headers))
|
||||
async with self.session.get(url, headers=headers, params=parameters) as response:
|
||||
response_json = await response.json()
|
||||
logger.trace(response.request_info.url)
|
||||
if response.status == 200:
|
||||
return response_json
|
||||
else:
|
||||
raise HttpClientException(response.reason, response.status)
|
||||
|
||||
Reference in New Issue
Block a user