Skip to content

Client

CTFdClient(base_url, token=None, *, timeout=DEFAULT_TIMEOUT, user_agent=DEFAULT_USER_AGENT, verify=True, client=None)

Async client for a CTFd instance.

Usage::

async with CTFdClient('https://demo.ctfd.io', token='ctfd_...') as ctfd:
    me = await ctfd.users.me()
    async for challenge in ctfd.challenges.iter():
        print(challenge.name)
Source code in ctfd/client.py
def __init__(  # noqa: PLR0913
    self,
    base_url: str,
    token: str | None = None,
    *,
    timeout: float = DEFAULT_TIMEOUT,
    user_agent: str = DEFAULT_USER_AGENT,
    verify: bool = True,
    client: httpx.AsyncClient | None = None,
) -> None:
    self._http = AsyncHTTPClient(
        base_url=base_url,
        token=token,
        timeout=timeout,
        user_agent=user_agent,
        verify=verify,
        client=client,
    )

    self.awards = AwardsResource(self._http)
    self.brackets = BracketsResource(self._http)
    self.challenges = ChallengesResource(self._http)
    self.comments = CommentsResource(self._http)
    self.configs = ConfigsResource(self._http)
    self.exports = ExportsResource(self._http)
    self.files = FilesResource(self._http)
    self.flags = FlagsResource(self._http)
    self.hints = HintsResource(self._http)
    self.notifications = NotificationsResource(self._http)
    self.pages = PagesResource(self._http)
    self.scoreboard = ScoreboardResource(self._http)
    self.shares = SharesResource(self._http)
    self.solutions = SolutionsResource(self._http)
    self.statistics = StatisticsResource(self._http)
    self.submissions = SubmissionsResource(self._http)
    self.tags = TagsResource(self._http)
    self.teams = TeamsResource(self._http)
    self.tokens = TokensResource(self._http)
    self.topics = TopicsResource(self._http)
    self.unlocks = UnlocksResource(self._http)
    self.users = UsersResource(self._http)