46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
class AppError(Exception):
|
|
def __init__(
|
|
self,
|
|
message: str,
|
|
*,
|
|
code: int,
|
|
status_code: int,
|
|
errors: list[dict] | None = None,
|
|
) -> None:
|
|
super().__init__(message)
|
|
self.message = message
|
|
self.code = code
|
|
self.status_code = status_code
|
|
self.errors = errors or []
|
|
|
|
|
|
class AuthenticationError(AppError):
|
|
def __init__(self, message: str = "unauthorized") -> None:
|
|
super().__init__(message, code=10001, status_code=401)
|
|
|
|
|
|
class AuthorizationError(AppError):
|
|
def __init__(self, message: str = "forbidden") -> None:
|
|
super().__init__(message, code=10002, status_code=403)
|
|
|
|
|
|
class ValidationAppError(AppError):
|
|
def __init__(self, message: str, errors: list[dict] | None = None) -> None:
|
|
super().__init__(message, code=10003, status_code=422, errors=errors)
|
|
|
|
|
|
class NotFoundAppError(AppError):
|
|
def __init__(self, message: str, *, code: int = 40400) -> None:
|
|
super().__init__(message, code=code, status_code=404)
|
|
|
|
|
|
class ConflictAppError(AppError):
|
|
def __init__(self, message: str, *, code: int = 40900) -> None:
|
|
super().__init__(message, code=code, status_code=409)
|
|
|
|
|
|
class BusinessAppError(AppError):
|
|
def __init__(self, message: str, *, code: int, status_code: int = 400) -> None:
|
|
super().__init__(message, code=code, status_code=status_code)
|
|
|