- 新增 5sing/apple/xm/me/qt/lr 平台包与取流实现(含 xm-sign、MissEvan 签名、蜻蜓 HMAC、Apple developer token) - 新增 wy/kg/tx/lr 登录:扫码、手机号、账密(kg 20028 风控指纹)、cookie 绑定、kg/tx 续期 - request 层:保留多值 Set-Cookie;JSON body 紧凑化(修复 kg 网关验签);直连不经系统代理(对齐 Node) - 登录路由统一 Body(embed=True),修复扫码轮询 422;lifespan 接入登录续期调度 - ruff/format/pyright 全绿;14 平台真实联网与 HTTP 路由验证通过
30 lines
873 B
Python
30 lines
873 B
Python
"""API 业务错误 —— 路由处理中抛出,由全局异常处理器转换为对应 HTTP 状态码的 JSON 响应。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
|
|
class ApiError(Exception):
|
|
"""业务错误:status 同时作为响应体中的 code。"""
|
|
|
|
def __init__(self, status: int, msg: str, detail: Any = None) -> None:
|
|
super().__init__(msg)
|
|
self.status = status
|
|
self.code = status
|
|
self.detail = detail
|
|
|
|
|
|
def not_found(msg: str, detail: Any = None) -> ApiError:
|
|
"""资源不存在(未知路由 / 不支持的平台)。"""
|
|
return ApiError(404, msg, detail)
|
|
|
|
|
|
def upstream(msg: str, detail: Any = None) -> ApiError:
|
|
"""上游平台请求失败。"""
|
|
return ApiError(502, msg, detail)
|
|
|
|
|
|
def bad_request(msg: str, detail: Any = None) -> ApiError:
|
|
return ApiError(400, msg, detail)
|