Spaces:
Sleeping
Sleeping
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
from typing import Any | |
from fastapi import HTTPException | |
from starlette.background import BackgroundTask | |
from common.response.response_code import CustomErrorCode, StandardResponseCode | |
class BaseExceptionMixin(Exception): | |
code: int | |
def __init__(self, *, msg: str = None, data: Any = None, background: BackgroundTask | None = None): | |
self.msg = msg | |
self.data = data | |
# The original background task: https://www.starlette.io/background/ | |
self.background = background | |
class HTTPError(HTTPException): | |
"""HTTP """ | |
def __init__(self, *, code: int, msg: Any = None, headers: dict[str, Any] | None = None): | |
super().__init__(status_code=code, detail=msg, headers=headers) | |
class CustomError(BaseExceptionMixin): | |
def __init__(self, *, error: CustomErrorCode, data: Any = None, background: BackgroundTask | None = None): | |
self.code = error.code | |
super().__init__(msg=error.msg, data=data, background=background) | |
class RequestError(BaseExceptionMixin): | |
code = StandardResponseCode.HTTP_400 | |
def __init__(self, *, msg: str = 'Bad Request', data: Any = None, background: BackgroundTask | None = None): | |
super().__init__(msg=msg, data=data, background=background) | |
class ForbiddenError(BaseExceptionMixin): | |
code = StandardResponseCode.HTTP_403 | |
def __init__(self, *, msg: str = 'Forbidden', data: Any = None, background: BackgroundTask | None = None): | |
super().__init__(msg=msg, data=data, background=background) | |
class NotFoundError(BaseExceptionMixin): | |
code = StandardResponseCode.HTTP_404 | |
def __init__(self, *, msg: str = 'Not Found', data: Any = None, background: BackgroundTask | None = None): | |
super().__init__(msg=msg, data=data, background=background) | |
class ServerError(BaseExceptionMixin): | |
code = StandardResponseCode.HTTP_500 | |
def __init__( | |
self, *, msg: str = 'Internal Server Error', data: Any = None, background: BackgroundTask | None = None | |
): | |
super().__init__(msg=msg, data=data, background=background) | |
class GatewayError(BaseExceptionMixin): | |
code = StandardResponseCode.HTTP_502 | |
def __init__(self, *, msg: str = 'Bad Gateway', data: Any = None, background: BackgroundTask | None = None): | |
super().__init__(msg=msg, data=data, background=background) | |
class AuthorizationError(BaseExceptionMixin): | |
code = StandardResponseCode.HTTP_401 | |
def __init__(self, *, msg: str = 'Permission Denied', data: Any = None, background: BackgroundTask | None = None): | |
super().__init__(msg=msg, data=data, background=background) | |
class TokenError(HTTPError): | |
code = StandardResponseCode.HTTP_401 | |
def __init__(self, *, msg: str = 'Not Authenticated', headers: dict[str, Any] | None = None): | |
super().__init__(code=self.code, msg=msg, headers=headers or {'WWW-Authenticate': 'Bearer'}) | |