mirror of
https://github.com/UrloMythus/UnHided.git
synced 2026-04-09 02:40:47 +00:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from datetime import datetime
|
|
from enum import Enum
|
|
from typing import Dict, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SpeedTestProvider(str, Enum):
|
|
REAL_DEBRID = "real_debrid"
|
|
ALL_DEBRID = "all_debrid"
|
|
|
|
|
|
class ServerInfo(BaseModel):
|
|
url: str
|
|
name: str
|
|
|
|
|
|
class UserInfo(BaseModel):
|
|
ip: Optional[str] = None
|
|
isp: Optional[str] = None
|
|
country: Optional[str] = None
|
|
|
|
|
|
class SpeedTestResult(BaseModel):
|
|
speed_mbps: float = Field(..., description="Speed in Mbps")
|
|
duration: float = Field(..., description="Test duration in seconds")
|
|
data_transferred: int = Field(..., description="Data transferred in bytes")
|
|
timestamp: datetime = Field(default_factory=datetime.utcnow)
|
|
|
|
|
|
class LocationResult(BaseModel):
|
|
result: Optional[SpeedTestResult] = None
|
|
error: Optional[str] = None
|
|
server_name: str
|
|
server_url: str
|
|
|
|
|
|
class SpeedTestTask(BaseModel):
|
|
task_id: str
|
|
provider: SpeedTestProvider
|
|
results: Dict[str, LocationResult] = {}
|
|
started_at: datetime
|
|
completed_at: Optional[datetime] = None
|
|
status: str = "running"
|
|
user_info: Optional[UserInfo] = None
|
|
current_location: Optional[str] = None
|