Spaces:
Paused
Paused
File size: 1,184 Bytes
64eeb8f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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
|