Source code for clash_royale.models.clan
from __future__ import annotations
from pydantic import Field
from typing_extensions import Literal
from .base import CRBaseModel
from .common import Arena, Badge
from .location import Location
[docs]
class ClanMember(CRBaseModel):
"""Represents a member of a clan."""
tag: str
name: str
role: Literal["leader", "coLeader", "elder", "admin", "member", "notMember"]
exp_level: int = Field(alias="expLevel")
trophies: int
arena: Arena
clan_rank: int = Field(alias="clanRank")
previous_clan_rank: int = Field(alias="previousClanRank")
donations: int
donations_received: int = Field(alias="donationsReceived")
clan_chest_points: int = Field(alias="clanChestPoints")
[docs]
class Clan(CRBaseModel):
"""Represents a Clash Royale clan."""
tag: str
name: str
type: Literal["open", "inviteOnly", "closed"]
description: str
badge_id: int = Field(alias="badgeId")
badge_urls: Badge | None = Field(default=None, alias="badgeUrls")
clan_score: int = Field(alias="clanScore")
clan_war_trophies: int = Field(alias="clanWarTrophies")
location: Location
required_trophies: int = Field(alias="requiredTrophies")
donations_per_week: int = Field(alias="donationsPerWeek")
clan_chest_status: Literal["inactive", "active", "completed", "unknown"] = Field(
alias="clanChestStatus"
)
clan_chest_level: int = Field(alias="clanChestLevel")
clan_chest_max_level: int = Field(alias="clanChestMaxLevel")
members: int
member_list: list[ClanMember] = Field(default_factory=list, alias="memberList")
[docs]
class ClanSearchResult(CRBaseModel):
"""Represents a clan in search results."""
tag: str
name: str
type: Literal["open", "inviteOnly", "closed"]
badge_id: int = Field(alias="badgeId")
badge_urls: Badge | None = Field(default=None, alias="badgeUrls")
clan_score: int = Field(alias="clanScore")
clan_war_trophies: int = Field(alias="clanWarTrophies")
location: Location
required_trophies: int = Field(alias="requiredTrophies")
donations_per_week: int = Field(alias="donationsPerWeek")
members: int
[docs]
class RiverRaceParticipant(CRBaseModel):
"""Represents a participant in a river race."""
tag: str
name: str
fame: int
repair_points: int = Field(alias="repairPoints")
boat_attacks: int = Field(alias="boatAttacks")
decks_used: int = Field(alias="decksUsed")
decks_used_today: int = Field(alias="decksUsedToday")
[docs]
class RiverRaceClan(CRBaseModel):
"""Represents a clan participating in a river race."""
tag: str
name: str
badge_id: int = Field(alias="badgeId")
clan_score: int = Field(alias="clanScore")
fame: int
repair_points: int = Field(alias="repairPoints")
finish_time: str | None = Field(default=None, alias="finishTime")
period_points: int = Field(alias="periodPoints")
participants: list[RiverRaceParticipant] = Field(default_factory=list)
[docs]
class RiverRaceLogStanding(CRBaseModel):
"""Represents a clan standing in a river race log."""
rank: int
trophy_change: int = Field(alias="trophyChange")
clan: RiverRaceClan
[docs]
class RiverRace(CRBaseModel):
"""Represents a river race."""
state: Literal[
"clanNotFound", "accessDenied", "matchmaking", "matched", "full", "ended"
]
clan: RiverRaceClan
clans: list[RiverRaceClan] = Field(default_factory=list)
collection_end_time: str | None = Field(default=None, alias="collectionEndTime")
war_end_time: str | None = Field(default=None, alias="warEndTime")
section_index: int = Field(alias="sectionIndex")
period_index: int = Field(alias="periodIndex")
period_type: Literal["training", "warDay", "colosseum"] = Field(alias="periodType")
period_logs: list[PeriodLog] = Field(default_factory=list, alias="periodLogs")
[docs]
class RiverRaceLog(CRBaseModel):
"""Represents a river race log entry."""
season_id: int = Field(alias="seasonId")
section_index: int = Field(alias="sectionIndex")
created_date: str = Field(alias="createdDate")
standings: list[RiverRaceLogStanding] = Field(default_factory=list)
[docs]
class PeriodLog(CRBaseModel):
"""Represents a period log."""
period_index: int = Field(alias="periodIndex")
items: list[PeriodLogEntry] = Field(default_factory=list)
[docs]
class PeriodLogEntry(CRBaseModel):
"""Represents a period log entry."""
clan: PeriodLogEntryClan
points_earned: int = Field(alias="pointsEarned")
progress_start_of_day: int = Field(alias="progressStartOfDay")
progress_end_of_day: int = Field(alias="progressEndOfDay")
end_of_day_rank: int = Field(alias="endOfDayRank")
progress_earned: int = Field(alias="progressEarned")
num_of_defenses_remaining: int = Field(alias="numOfDefensesRemaining")
progress_earned_from_defenses: int = Field(alias="progressEarnedFromDefenses")
[docs]
class PeriodLogEntryClan(CRBaseModel):
"""Represents a clan in a period log entry."""
tag: str