from __future__ import annotations from abc import ABC import requests from ..base import AuthorizedApiClient __all__ = ["BaseAtlasApiClient"] class BaseAtlasApiClient(AuthorizedApiClient, ABC): def __init__(self, *, auth_url: str, client_id: str, client_secret: str, audience: str, **kwargs): super().__init__(**kwargs) self._auth_url = auth_url self._client_id = client_id self._client_secret = client_secret self._audience = audience def _refresh_access_token(self) -> tuple[str, int]: request = requests.Request( method="post", url=f"{self._auth_url}/oauth/token", json={ "client_id": self._client_id, "client_secret": self._client_secret, "grant_type": "client_credentials", "audience": self._audience, }, ) result = self.send_request_with_retry(request, authorize=False).json() return result["access_token"], result["expires_in"]