Replaced all inline error messages with the standardized `api_error` helper for consistent error response formatting. This improves clarity, maintainability, and ensures uniform error structures across the application. Updated logging for collector failures to include error class and switched to warning level for target unreachable scenarios.
39 lines
954 B
Python
39 lines
954 B
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
|
|
def error_payload(code: str, message: str, details: Any, request_id: str) -> dict[str, Any]:
|
|
return {
|
|
"code": code,
|
|
"message": message,
|
|
"details": details,
|
|
"request_id": request_id,
|
|
}
|
|
|
|
|
|
def api_error(code: str, message: str, details: Any = None) -> dict[str, Any]:
|
|
return {
|
|
"code": code,
|
|
"message": message,
|
|
"details": details,
|
|
}
|
|
|
|
|
|
def http_status_to_code(status_code: int) -> str:
|
|
mapping = {
|
|
400: "bad_request",
|
|
401: "unauthorized",
|
|
403: "forbidden",
|
|
404: "not_found",
|
|
405: "method_not_allowed",
|
|
409: "conflict",
|
|
422: "validation_error",
|
|
429: "rate_limited",
|
|
500: "internal_error",
|
|
502: "bad_gateway",
|
|
503: "service_unavailable",
|
|
504: "gateway_timeout",
|
|
}
|
|
return mapping.get(status_code, f"http_{status_code}")
|