from typing import Dict, Any
from .base import BaseMixin
from ..const import API_PATHS


class Download(BaseMixin):
    async def info(self, file_id: int) -> Dict[str, Any]:
        """
        获取下载链接
        
        获取指定文件的下载链接。下载链接有效期为4小时。
        
        注意：此接口有访问频率限制(QPS: 5)。
        
        异常返回:
            code=5113: 自用下载流量不足 - 您今日自用下载流量已超出1GB上限，升级VIP会员可无限流量下载
            code=5066: 文件不存在 - 文件不存在，检查传入fileId是否正确
        
        Args:
            file_id: 文件ID
        
        Returns:
            Dict[str, Any]: API响应数据
            
        Returns Data Structure:
            {
                "code": 0,
                "message": "ok",
                "data": {
                    "downloadUrl": "https://download-url..."
                },
                "x-traceID": "trace_id"
            }
        
        字段说明:
            downloadUrl: 文件下载链接
            x-traceID: 请求追踪ID
        
        Example:
            >>> result = await download.info(12345)
            >>> if result["code"] == 0:
            ...     download_url = result["data"]["downloadUrl"]
            ...     print(f"下载链接: {download_url}")
        """
        return await self._send_request(
            API_PATHS.get_download_url,
            params={
                "fileId": file_id
            }
        )
