You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
1.8 KiB

class AppError(Exception):
code = "internal_error"
message = "An unexpected error occurred."
def __init__(self, message: str | None = None) -> None:
super().__init__(message or self.message)
self.detail = message or self.message
class NotFoundError(AppError):
code = "not_found"
message = "Resource not found."
class ConflictError(AppError):
code = "conflict"
message = "Resource conflict."
class ValidationError(AppError):
code = "validation_error"
message = "Validation failed."
class UnauthorizedError(AppError):
code = "unauthorized"
message = "Authentication is required."
class AuthenticationFailedError(UnauthorizedError):
code = "authentication_failed"
message = "Invalid username or password."
class AuthSessionExpiredError(UnauthorizedError):
code = "auth_session_expired"
message = "Authentication session is no longer valid."
class DirectoryNotFoundError(NotFoundError):
code = "directory_not_found"
message = "Directory does not exist."
class DirectoryConflictError(ConflictError):
code = "directory_conflict"
message = "Directory already exists."
class FileNotFoundError(NotFoundError):
code = "file_not_found"
message = "File does not exist."
class FileConflictError(ConflictError):
code = "file_conflict"
message = "File already exists."
class UploadNotFoundError(NotFoundError):
code = "upload_not_found"
message = "Upload session does not exist."
class UploadConflictError(ConflictError):
code = "upload_conflict"
message = "Upload state conflict."
class RangeNotSatisfiableError(AppError):
code = "range_not_satisfiable"
message = "Requested byte range is not satisfiable."
class PreviewNotSupportedError(AppError):
code = "preview_not_supported"
message = "Preview is not supported for this file type."