39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
"""
|
|
Error handling module.
|
|
"""
|
|
from fastapi import Request
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from .models import ErrorResponse, ErrorDetail
|
|
|
|
|
|
def create_error_response(
|
|
message: str,
|
|
error_type: str = "invalid_request",
|
|
param: str = None,
|
|
code: str = None,
|
|
status_code: int = 400,
|
|
) -> JSONResponse:
|
|
"""Create a standard error response."""
|
|
error_detail = ErrorDetail(message=message, type=error_type, param=param, code=code)
|
|
error_response = ErrorResponse(error=error_detail)
|
|
return JSONResponse(status_code=status_code, content=error_response.model_dump())
|
|
|
|
|
|
async def not_found_handler(request: Request, exc):
|
|
"""404 error handler."""
|
|
return create_error_response(
|
|
message=f"Not found: {request.url.path}",
|
|
error_type="not_found",
|
|
status_code=404,
|
|
)
|
|
|
|
|
|
async def internal_error_handler(request: Request, exc):
|
|
"""500 error handler."""
|
|
return create_error_response(
|
|
message="Internal server error",
|
|
error_type="server_error",
|
|
status_code=500
|
|
)
|