Source code for nrk_psapi.models.common
from __future__ import annotations
from dataclasses import dataclass, field
from enum import Enum
from typing import Literal, TypedDict, TypeVar
from mashumaro import field_options
from mashumaro.config import BaseConfig
from mashumaro.mixins.orjson import DataClassORJSONMixin
IpCheckLookupSource = Literal["MaxMind", "NEP"]
IpCheckAccessGroup = Literal["NO", "EEA", "WORLD"]
DisplayAspectRatioVideo = Literal["16:9", "4:3"]
T = TypeVar("T", bound="DataClassORJSONMixin")
[docs]
@dataclass
class BaseDataClassORJSONMixin(DataClassORJSONMixin):
class Config(BaseConfig):
omit_none = True
allow_deserialization_not_by_alias = True
[docs]
@dataclass
class IpCheck(BaseDataClassORJSONMixin):
client_ip_address: str = field(metadata=field_options(alias="clientIpAddress"))
country_code: str = field(metadata=field_options(alias="countryCode"))
is_ip_norwegian: bool = field(metadata=field_options(alias="isIpNorwegian"))
lookup_source: IpCheckLookupSource = field(metadata=field_options(alias="lookupSource"))
access_group: IpCheckAccessGroup = field(metadata=field_options(alias="accessGroup"))
[docs]
class StrEnum(str, Enum):
def __str__(self) -> str:
return str(self.value)
@classmethod
def from_str(cls, value: str) -> StrEnum:
return cls(value)
class Operation(TypedDict):
"""API operation (to be implemented)."""
response_class: type[BaseDataClassORJSONMixin]
path: str
[docs]
class FetchedFileInfo(TypedDict):
"""Fetched file info."""
content_length: int
content_type: str | None
[docs]
class SortOrder(StrEnum):
"""Sort order."""
ASCENDING = "ascending"
DESCENDING = "descending"
[docs]
@dataclass
class Enabled(BaseDataClassORJSONMixin):
"""Enabled status."""
enabled: bool