31 lines
738 B
Python
31 lines
738 B
Python
"""Application exceptions and response handler."""
|
|
|
|
from typing import Any
|
|
|
|
from fastapi import Request
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
class AppException(Exception):
|
|
def __init__(
|
|
self,
|
|
message: str,
|
|
*,
|
|
code: int = 400,
|
|
status_code: int = 400,
|
|
details: Any = None,
|
|
) -> None:
|
|
super().__init__(message)
|
|
self.message = message
|
|
self.code = code
|
|
self.status_code = status_code
|
|
self.details = details
|
|
|
|
|
|
async def app_exception_handler(_: Request, exc: AppException) -> JSONResponse:
|
|
return JSONResponse(
|
|
status_code=exc.status_code,
|
|
content={"code": exc.code, "message": exc.message, "data": exc.details},
|
|
)
|
|
|