Source code for bungieapi.client
import dataclasses as dt
import typing as t
import aiohttp
from bungieapi.generated.clients.root import Client as RootClient
BASE_URL = "https://www.bungie.net"
BASE_PATH = "/Platform"
[docs]@dt.dataclass
class Credentials:
api_key: str
[docs]class Client:
_session = t.Optional[aiohttp.ClientSession]
def __init__(self, credentials: Credentials, base_url: str = BASE_URL) -> None:
self._base_url = base_url
self._session = None
self._credentials = credentials
async def __aenter__(self) -> RootClient:
self._session = aiohttp.ClientSession(
base_url=self._base_url, headers={"X-Api-Key": self._credentials.api_key}
)
return RootClient(self._session, BASE_PATH)
async def __aexit__(self, exc_type, exc_val, exc_tb):
assert self._session # type: ignore
await self._session.close() # type: ignore
[docs] @classmethod
def from_credentials(cls, api_key: str) -> "Client":
return cls(Credentials(api_key=api_key))