46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
from typing import Any, Optional
|
|
from fastapi import status
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
class ResponseHandler:
|
|
@staticmethod
|
|
def success(
|
|
message: str, data: Optional[Any] = None, status_code: int = status.HTTP_200_OK
|
|
) -> JSONResponse:
|
|
"""Create a success response"""
|
|
return JSONResponse(
|
|
content={
|
|
"completed": True,
|
|
"message": message,
|
|
"data": data or {},
|
|
},
|
|
status_code=status_code,
|
|
)
|
|
|
|
@staticmethod
|
|
def error(
|
|
message: str,
|
|
data: Optional[Any] = None,
|
|
status_code: int = status.HTTP_400_BAD_REQUEST,
|
|
) -> JSONResponse:
|
|
"""Create an error response"""
|
|
return JSONResponse(
|
|
content={
|
|
"completed": False,
|
|
"message": message,
|
|
"data": data or {},
|
|
},
|
|
status_code=status_code,
|
|
)
|
|
|
|
@staticmethod
|
|
def unauthorized(message: str = "Unauthorized access") -> JSONResponse:
|
|
"""Create an unauthorized response"""
|
|
return ResponseHandler.error(message, status_code=status.HTTP_401_UNAUTHORIZED)
|
|
|
|
@staticmethod
|
|
def not_found(message: str = "Resource not found") -> JSONResponse:
|
|
"""Create a not found response"""
|
|
return ResponseHandler.error(message, status_code=status.HTTP_404_NOT_FOUND)
|