Source code for clash_royale.aio.resources.leaderboards

from __future__ import annotations

from typing_extensions import Unpack

from ...models.leaderboard import Leaderboard, LeaderboardPlayer
from ...types import PaginationParams
from ..pagination import PaginatedList
from .resource import Resource


[docs] class Leaderboards(Resource): """ Async resource for leaderboard-related endpoints. Check the :clash-royale-api:`leaderboards` for more detailed information about each endpoint. """
[docs] async def list(self) -> list[Leaderboard]: # ty:ignore[invalid-type-form] """List all available leaderboards.""" response = await self._client._request("GET", "/leaderboards") items = response.get("items", []) return [Leaderboard.model_validate(item) for item in items]
[docs] def get( self, leaderboard_id: int, **params: Unpack[PaginationParams] ) -> PaginatedList[LeaderboardPlayer]: """Get player rankings for a specific leaderboard. :param leaderboard_id: The leaderboard ID from the leaderboards list. """ return PaginatedList( client=self._client, endpoint=f"/leaderboard/{leaderboard_id}", model=LeaderboardPlayer, params=params, # ty:ignore[invalid-argument-type] )