You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.5 KiB
71 lines
2.5 KiB
"""
|
|
ADB数据模型定义
|
|
"""
|
|
from typing import Optional, List
|
|
from pydantic import BaseModel, Field
|
|
from enum import Enum
|
|
|
|
|
|
class DeviceStatus(str, Enum):
|
|
"""设备状态枚举"""
|
|
DEVICE = "device"
|
|
OFFLINE = "offline"
|
|
UNAUTHORIZED = "unauthorized"
|
|
BOOTLOADER = "bootloader"
|
|
RECOVERY = "recovery"
|
|
SIDELOAD = "sideload"
|
|
DISCONNECTED = "disconnected"
|
|
|
|
|
|
class DeviceInfo(BaseModel):
|
|
"""设备信息模型"""
|
|
serial: str = Field(..., description="设备序列号")
|
|
status: DeviceStatus = Field(..., description="设备状态")
|
|
model: Optional[str] = Field(None, description="设备型号")
|
|
manufacturer: Optional[str] = Field(None, description="制造商")
|
|
android_version: Optional[str] = Field(None, description="Android版本")
|
|
sdk_version: Optional[int] = Field(None, description="SDK版本")
|
|
|
|
|
|
class DeviceEvent(BaseModel):
|
|
"""设备事件模型"""
|
|
present: bool = Field(..., description="设备是否连接")
|
|
serial: str = Field(..., description="设备序列号")
|
|
status: DeviceStatus = Field(..., description="设备状态")
|
|
|
|
|
|
class ForwardInfo(BaseModel):
|
|
"""端口转发信息模型"""
|
|
serial: str = Field(..., description="设备序列号")
|
|
local: str = Field(..., description="本地地址")
|
|
remote: str = Field(..., description="远程地址")
|
|
|
|
|
|
class ShellCommand(BaseModel):
|
|
"""Shell命令模型"""
|
|
command: str = Field(..., description="要执行的命令")
|
|
timeout: Optional[int] = Field(30, description="命令超时时间(秒)")
|
|
|
|
|
|
class ShellResponse(BaseModel):
|
|
"""Shell命令响应模型"""
|
|
success: bool = Field(..., description="是否成功")
|
|
output: str = Field(..., description="命令输出")
|
|
error: Optional[str] = Field(None, description="错误信息")
|
|
exit_code: Optional[int] = Field(None, description="退出码")
|
|
|
|
|
|
class ForwardRequest(BaseModel):
|
|
"""端口转发请求模型"""
|
|
serial: str = Field(..., description="设备序列号")
|
|
local: str = Field(..., description="本地地址 (格式: tcp:port 或 localabstract:name)")
|
|
remote: str = Field(..., description="远程地址 (格式: tcp:port 或 localabstract:name)")
|
|
norebind: bool = Field(False, description="是否禁止重新绑定")
|
|
|
|
|
|
class ServerInfo(BaseModel):
|
|
"""ADB服务器信息模型"""
|
|
version: int = Field(..., description="服务器版本")
|
|
host: str = Field(..., description="服务器主机")
|
|
port: int = Field(..., description="服务器端口")
|
|
status: str = Field(..., description="服务器状态")
|