from __future__ import annotations
from typing import Any, Self
from ._admin import AdminService
from ._auth import AuthService
from ._base import BaseClient
from ._mfa import MFAService
from ._oauth import OAuthService
from ._user import UserService
class AuthFrameworkClient:
def __init__(
self,
base_url: str,
*,
timeout: float = 30.0,
retries: int = 3,
api_key: str | None = None,
) -> None:
self._client = BaseClient(
base_url=base_url,
timeout=timeout,
retries=retries,
api_key=api_key,
)
self.auth = AuthService(self._client)
self.user = UserService(self._client)
self.mfa = MFAService(self._client)
self.oauth = OAuthService(self._client)
self.admin = AdminService(self._client)
async def __aenter__(self) -> Self:
await self._client.__aenter__()
return self
async def __aexit__(
self,
exc_type: type[BaseException] | None,
exc_val: BaseException | None,
exc_tb: object,
) -> None:
await self._client.__aexit__(exc_type, exc_val, exc_tb)
async def close(self) -> None:
await self._client.close()
def set_access_token(self, token: str) -> None:
self._client.set_access_token(token)
def clear_access_token(self) -> None:
self._client.clear_access_token()
def get_access_token(self) -> str | None:
return self._client.get_access_token()
async def health_check(self) -> dict[str, Any]:
return await self._client.make_request("GET", "/health")
async def get_server_info(self) -> dict[str, Any]:
return await self._client.make_request("GET", "/info")