Files
s01e05/domain/entities.py
2026-03-16 06:52:12 +01:00

60 lines
1.2 KiB
Python

from dataclasses import dataclass, field
from enum import Enum
from typing import Any
class RouteStatus(Enum):
OPEN = "RTOPEN"
CLOSE = "RTCLOSE"
class RouteMode(Enum):
NORMAL = "normal"
RECONFIGURE = "reconfigure"
@dataclass
class Route:
name: str
mode: RouteMode = RouteMode.NORMAL
status: str = "close"
@property
def is_open(self) -> bool:
return self.status == "open"
@property
def is_reconfigurable(self) -> bool:
return self.mode == RouteMode.RECONFIGURE
@dataclass
class ApiResponse:
ok: bool
data: dict[str, Any]
http_code: int
headers: dict[str, str] = field(default_factory=dict)
@property
def is_rate_limited(self) -> bool:
return self.http_code == 429
@property
def is_server_error(self) -> bool:
return self.http_code == 503
@property
def retry_after(self) -> int:
return self.data.get("retry_after", 5)
@property
def message(self) -> str:
return self.data.get("message", "")
@property
def flag(self) -> str | None:
msg = self.message
if msg and "{FLG:" in msg:
return msg
return None