"""UserProfile-related data models."""
from dataclasses import dataclass, field
@dataclass
class UserProfile:
"""User profile information."""
id: str
nick: str
email: str = ""
country: str = ""
level: int = 0
created: str = ""
is_verified: bool = False
is_pro: bool = False
avatar_url: str | None = None
raw_data: dict = field(default_factory=dict)
@classmethod
def from_api_response(cls, data: dict) -> "UserProfile":
"""Create UserProfile from API response with dynamic field mapping."""
return cls(
id=data.get("id", ""),
nick=data.get("nick", data.get("username", "")),
email=data.get("email", ""),
country=data.get("country", data.get("countryCode", "")),
level=data.get("level", data.get("xpLevel", 0)),
created=data.get("created", data.get("createdAt", "")),
is_verified=data.get("isVerified", data.get("verified", False)),
is_pro=data.get("isPro", data.get("isProUser", False)),
avatar_url=(
data.get("pin", {}).get("url") if isinstance(data.get("pin"), dict) else None
),
raw_data=data,
)
def to_dict(self) -> dict:
"""Convert to dictionary."""
return {
"id": self.id,
"nick": self.nick,
"email": self.email,
"country": self.country,
"level": self.level,
"created": self.created,
"is_verified": self.is_verified,
"is_pro": self.is_pro,
"avatar_url": self.avatar_url,
}