Spaces:
Sleeping
Sleeping
File size: 1,038 Bytes
52f5a2a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | from fastapi import HTTPException, status
from typing import Any, Optional
class AppError(HTTPException):
def __init__(
self,
status_code: int,
detail: Any = None,
headers: Optional[dict[str, Any]] = None,
) -> None:
super().__init__(status_code=status_code, detail=detail, headers=headers)
class NotFoundError(AppError):
def __init__(self, resource: str = "Resource"):
super().__init__(
status_code=status.HTTP_404_NOT_FOUND,
detail=f"{resource} not found"
)
class AuthenticationError(AppError):
def __init__(self, detail: str = "Could not validate credentials"):
super().__init__(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=detail,
headers={"WWW-Authenticate": "Bearer"},
)
class DuplicateError(AppError):
def __init__(self, detail: str = "Data already exists"):
super().__init__(
status_code=status.HTTP_409_CONFLICT,
detail=detail
) |