refactor: make API registry authoritative

This commit is contained in:
leefer
2026-07-29 18:07:34 +08:00
parent b0cbd25f64
commit 93fc4505a9
9 changed files with 230 additions and 67 deletions
+31
View File
@@ -0,0 +1,31 @@
from __future__ import annotations
from http import HTTPStatus
from typing import Any
STATUS_CODES = {
HTTPStatus.BAD_REQUEST: "bad_request",
HTTPStatus.UNAUTHORIZED: "authentication_required",
HTTPStatus.FORBIDDEN: "access_denied",
HTTPStatus.NOT_FOUND: "not_found",
HTTPStatus.CONFLICT: "conflict",
HTTPStatus.INTERNAL_SERVER_ERROR: "internal_error",
HTTPStatus.SERVICE_UNAVAILABLE: "service_unavailable",
}
def normalize_error_payload(
payload: dict[str, Any], status: int | HTTPStatus, request_id: str,
) -> dict[str, Any]:
if "error" not in payload:
return payload
status_value = HTTPStatus(int(status))
message = str(payload.get("message") or payload.get("error") or status_value.phrase)
return {
**payload,
"error": message,
"code": str(payload.get("code") or STATUS_CODES.get(status_value) or "request_failed"),
"message": message,
"request_id": request_id,
}