Source code for clash_royale.resources.leaderboards
from __future__ import annotations
from typing_extensions import Unpack
from ..models.leaderboard import Leaderboard, LeaderboardPlayer
from ..pagination import PaginatedList
from ..types import PaginationParams
from .resource import Resource
[docs]
class Leaderboards(Resource):
"""
Resource for leaderboard-related endpoints.
Check the :clash-royale-api:`leaderboards`
for more detailed information about each endpoint.
"""
[docs]
def list(self) -> list[Leaderboard]: # ty:ignore[invalid-type-form]
"""List all available leaderboards."""
response = 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]
)