You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
1.7 KiB
Python
90 lines
1.7 KiB
Python
import dataclasses
|
|
from datetime import datetime
|
|
|
|
from fastapi import Response
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class IpInfo:
|
|
"""IP 归属地解析结果。"""
|
|
|
|
ip: str
|
|
country: str | None
|
|
region: str | None
|
|
city: str | None
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class UserAgentInfo:
|
|
"""User-Agent 解析结果(操作系统、浏览器、设备)。"""
|
|
|
|
user_agent: str
|
|
os: str | None
|
|
browser: str | None
|
|
device: str | None
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class RequestCallNext:
|
|
"""请求链路 call_next 封装结果(状态码、消息、异常、响应)。"""
|
|
|
|
code: str
|
|
msg: str
|
|
err: Exception | None
|
|
response: Response
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class AccessToken:
|
|
"""访问令牌及过期时间、会话 UUID。"""
|
|
|
|
access_token: str
|
|
access_token_expire_time: datetime
|
|
session_uuid: str
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class RefreshToken:
|
|
"""刷新令牌及过期时间。"""
|
|
|
|
refresh_token: str
|
|
refresh_token_expire_time: datetime
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class NewToken:
|
|
"""刷新后的一对访问/刷新令牌及会话 UUID。"""
|
|
|
|
new_access_token: str
|
|
new_access_token_expire_time: datetime
|
|
new_refresh_token: str
|
|
new_refresh_token_expire_time: datetime
|
|
session_uuid: str
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class TokenPayload:
|
|
"""JWT/会话载荷中的用户与会话标识。"""
|
|
|
|
id: int
|
|
session_uuid: str
|
|
expire_time: datetime
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class UploadUrl:
|
|
"""上传完成后的访问 URL。"""
|
|
|
|
url: str
|
|
|
|
|
|
@dataclasses.dataclass
|
|
class SnowflakeInfo:
|
|
"""雪花 ID 拆解后的各段信息。"""
|
|
|
|
timestamp: int
|
|
datetime: str
|
|
cluster_id: int
|
|
node_id: int
|
|
sequence: int
|