from __future__ import annotations import json from typing import TYPE_CHECKING from ..errors import ApiError from ..request import Request from ..response import Response from .base import Middleware if TYPE_CHECKING: from src.logger import BoundLogger __all__ = ["ApiErrorMiddleware"] class ApiErrorMiddleware(Middleware): def handle(self, request: Request, *, logger: "BoundLogger", **match_info) -> Response: try: return self.handler(request, logger=logger, **match_info) except ApiError as e: return Response(status_code=e.status_code, body=json.dumps(e.to_dict()))