jubilant-system-core/FAPI/BearerManager.py

46 lines
1.5 KiB
Python

from enum import Enum
from loguru import logger
import os
import requests
class BearerManager:
class Endpoints(Enum):
RANDOM = '/random_token'
def __init__(self, demb_capi_auth: str, base_address: str):
self.base_address = base_address
self.demb_capi_auth = demb_capi_auth
self.session = requests.Session()
def get_random_bearer(self) -> str:
"""Gets bearer token from capi.demb.design (companion-api project)
:return: bearer token as str
"""
bearer_request: requests.Response = self._request(self.Endpoints.RANDOM)
try:
bearer: str = bearer_request.json()['access_token']
except Exception as e:
logger.exception(f'Unable to parse capi.demb.design answer\nrequested: {bearer_request.url!r}\n'
f'code: {bearer_request.status_code!r}\nresponse: {bearer_request.content!r}', exc_info=e)
raise BearerManagerException(e)
return bearer
def _request(self, _endpoint: Endpoints) -> requests.Response:
endpoint = self.base_address + _endpoint.value
return self.session.get(url=endpoint, headers={'auth': self.demb_capi_auth})
class BearerManagerException(Exception):
def __init__(self, parent_exception: Exception):
self.parent_exception = parent_exception
bearer_manager = BearerManager(os.environ['DEMB_CAPI_AUTH'], 'https://capi.demb.design')