new api service and logic implemented
This commit is contained in:
175
ApiLayers/ApiValidations/Response/default_response.py
Normal file
175
ApiLayers/ApiValidations/Response/default_response.py
Normal file
@@ -0,0 +1,175 @@
|
||||
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
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user