from pydantic import BaseModel from enum import Enum from typing import Optional from datetime import datetime class DownloadStatus(str, Enum): PENDING = "pending" DOWNLOADING = "downloading" PAUSED = "paused" COMPLETED = "completed" FAILED = "failed" CANCELLED = "cancelled" class HostType(str, Enum): RAPIDFILE = "rapidfile" UNFICHIER = "1fichier" DOODSTREAM = "doodstream" OTHER = "other" class DownloadTask(BaseModel): id: str url: str filename: str host: HostType status: DownloadStatus progress: float = 0.0 downloaded_bytes: int = 0 total_bytes: Optional[int] = None speed: float = 0.0 error: Optional[str] = None created_at: datetime started_at: Optional[datetime] = None completed_at: Optional[datetime] = None file_path: Optional[str] = None class DownloadRequest(BaseModel): url: str filename: Optional[str] = None