143 lines
4.4 KiB
Python
143 lines
4.4 KiB
Python
from typing import Optional
|
|
from fastapi import status
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from ApiLayers.LanguageModels.set_defaults.static_validation_retriever import StaticValidationRetriever
|
|
|
|
|
|
class BaseEndpointResponse(StaticValidationRetriever):
|
|
pass
|
|
|
|
|
|
class EndpointSuccessResponse(BaseEndpointResponse): # 200 OK
|
|
|
|
def as_dict(self, data: Optional[dict] = None):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_200_OK,
|
|
content=dict(completed=True, **self.response, lang=self.lang, data=data),
|
|
)
|
|
|
|
|
|
class EndpointCreatedResponse(BaseEndpointResponse): # 201 Created
|
|
|
|
def as_dict(self, data: Optional[dict] = None):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_201_CREATED,
|
|
content=dict(completed=True, **self.response, lang=self.lang, data=data),
|
|
)
|
|
|
|
|
|
class EndpointAcceptedResponse(BaseEndpointResponse): # 202 Accepted
|
|
|
|
def as_dict(self, data: Optional[dict] = None):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_202_ACCEPTED,
|
|
content=dict(completed=True, **self.response, lang=self.lang, data=data),
|
|
)
|
|
|
|
|
|
class EndpointNotModifiedResponse(BaseEndpointResponse): # 304 Not Modified
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_304_NOT_MODIFIED,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointBadRequestResponse(BaseEndpointResponse): # 400 Bad Request
|
|
|
|
def as_dict(self, data: Optional[dict] = None):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_400_BAD_REQUEST,
|
|
content=dict(completed=False, **self.response, lang=self.lang, data=data),
|
|
)
|
|
|
|
|
|
class EndpointUnauthorizedResponse(BaseEndpointResponse): # 401 Unauthorized
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointForbiddenResponse(BaseEndpointResponse): # 403 Forbidden
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_403_FORBIDDEN,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointNotFoundResponse(BaseEndpointResponse): # 404 Not Found
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointMethodNotAllowedResponse(BaseEndpointResponse): # 405 Method Not Allowed
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_405_METHOD_NOT_ALLOWED,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointNotAcceptableResponse(BaseEndpointResponse): # 406 Not Acceptable
|
|
|
|
def as_dict(self, data: Optional[dict] = None):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_406_NOT_ACCEPTABLE,
|
|
content=dict(completed=False, data=data, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointConflictResponse(BaseEndpointResponse): # 409 Conflict
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_409_CONFLICT,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointUnprocessableEntityResponse(
|
|
BaseEndpointResponse
|
|
): # 422 Unprocessable Entity
|
|
|
|
def as_dict(self, data: Optional[dict] = None):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
content=dict(completed=False, **self.response, lang=self.lang, data=data),
|
|
)
|
|
|
|
|
|
class EndpointTooManyRequestsResponse(BaseEndpointResponse): # 429 Too Many Requests
|
|
|
|
def __init__(self, retry_after: int, lang: str, code: str):
|
|
super().__init__(lang=lang, code=code)
|
|
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, **self.response, lang=self.lang),
|
|
)
|
|
|
|
|
|
class EndpointInternalErrorResponse(BaseEndpointResponse): # 500 Internal Server Error
|
|
|
|
def as_dict(self):
|
|
return JSONResponse(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
content=dict(completed=False, **self.response, lang=self.lang),
|
|
)
|