mirror of
https://github.com/norohind/jubilant-system-core.git
synced 2025-04-14 10:37:12 +03:00
46 lines
1.5 KiB
Python
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')
|