import datetime as dt from abc import ABC, abstractmethod from typing import Any from src.data_info import TokenInfo, UserInfo from ..base import AuthorizedApiClient __all__ = ["BaseDSPApiClient"] class BaseDSPApiClient(AuthorizedApiClient, ABC): def get_token_from_code(self, code: str, redirect_uri: str, **extra: Any) -> TokenInfo: token_info = self._get_token_from_code(code, redirect_uri, **extra) self._refresh_token = token_info.refresh_token self._access_token = token_info.access_token self._expires_in = token_info.expires_in self._updated_at = dt.datetime.utcnow() return token_info @abstractmethod def _get_token_from_code(self, code: str, redirect_uri: str, **extra: Any) -> TokenInfo: pass @abstractmethod def get_user_info(self, **extra) -> UserInfo: pass