wag-managment-api-service-v.../ApiLayers/ApiValidations/Response/default_response.py

176 lines
4.4 KiB
Python

from ast import Dict
from typing import Any, Optional
from fastapi import status
from fastapi.responses import JSONResponse
class BaseEndpointResponse:
def __init__(self, code: str, lang: str):
self.code = code
self.lang = lang
def retrieve_message(self):
messages = {}
return messages[self.code][self.lang]
# 1. 200 OK
class EndpointSuccessResponse(BaseEndpointResponse):
def as_dict(self, data: Optional[Dict[str, Any]] = None):
return JSONResponse(
status_code=status.HTTP_200_OK,
content=dict(
completed=True,
message=self.retrieve_message(),
lang=self.lang,
data=data
)
)
# 2. 201 Created
class EndpointCreatedResponse(BaseEndpointResponse):
def as_dict(self, data: Optional[Dict[str, Any]] = None):
return JSONResponse(
status_code=status.HTTP_201_CREATED,
content=dict(
completed=True,
message=self.retrieve_message(),
lang=self.lang,
data=data
)
)
# 3. 202 Accepted
class EndpointAcceptedResponse(BaseEndpointResponse):
def as_dict(self, data: Optional[Dict[str, Any]] = None):
return JSONResponse(
status_code=status.HTTP_202_ACCEPTED,
content=dict(
completed=True,
message=self.retrieve_message(),
lang=self.lang,
data=data
)
)
# 4. 400 Bad Request
class EndpointBadRequestResponse(BaseEndpointResponse):
def as_dict(self, data: Optional[Dict[str, Any]] = None):
return JSONResponse(
status_code=status.HTTP_400_BAD_REQUEST,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang,
data=data
)
)
# 5. 401 Unauthorized
class EndpointUnauthorizedResponse(BaseEndpointResponse):
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_401_UNAUTHORIZED,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)
# 6. 404 Not Found
class EndpointNotFoundResponse(BaseEndpointResponse):
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_404_NOT_FOUND,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)
# 3. 403 Forbidden
class EndpointForbiddenResponse(BaseEndpointResponse):
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_403_FORBIDDEN,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)
# 6. 409 Conflict
class EndpointConflictResponse(BaseEndpointResponse):
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_409_CONFLICT,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)
# 7. 429 Too Many Requests
class EndpointTooManyRequestsResponse(BaseEndpointResponse):
def __init__(self, retry_after: int):
self.retry_after = retry_after
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_429_TOO_MANY_REQUESTS,
headers={"Retry-After": str(self.retry_after)},
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)
# 7. 500 Internal Server Error
class EndpointInternalErrorResponse(BaseEndpointResponse):
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)
class EndpointErrorResponse(BaseEndpointResponse):
def as_dict(self):
return JSONResponse(
status_code=status.HTTP_304_NOT_MODIFIED,
content=dict(
completed=False,
message=self.retrieve_message(),
lang=self.lang
)
)