from fansifter_common.adapters.twilio.exceptions import TwilioClientError from fansifter_common.api.error_handlers import register_defaults from fastapi import FastAPI from starlette.requests import Request from starlette.responses import JSONResponse, Response async def twilio_client_error_handler( request: Request, # noqa: ARG001 exc: Exception, ) -> Response: assert isinstance(exc, TwilioClientError) return JSONResponse( content={ "code": "twilio_client_error", "message": exc.message, "twilio_error": exc.error_data, }, status_code=exc.status_code, ) def register(app: FastAPI) -> None: register_defaults(app) app.add_exception_handler(TwilioClientError, twilio_client_error_handler)