Spaces:
Sleeping
Sleeping
| 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 | |
| ) |