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