champ-chatbot / exceptions.py
qyle's picture
Deploy from GitLab 2a1446b1
b1b5dda
Raw
History Blame Contribute Delete
2.86 kB
from enum import Enum
from constants import (
STATUS_CODE_BAD_REQUEST,
STATUS_CODE_CONFLICT,
STATUS_CODE_CONTENT_TOO_LARGE,
STATUS_CODE_INTERNAL_SERVER_ERROR,
STATUS_CODE_LENGTH_REQUIRED,
STATUS_CODE_UNPROCESSABLE_CONTENT,
STATUS_CODE_UNSUPPORTED_MEDIA_TYPE,
STATUS_CODE_EXCEED_SIZE_LIMIT,
)
class FileValidationError(Enum):
MISSING_SIZE = "MISSING_SIZE"
FILE_TOO_LARGE = "FILE_TOO_LARGE"
MISSING_FILE_NAME = "MISSING_FILE_NAME"
FILE_NAME_TOO_LARGE = "FILE_NAME_TOO_LARGE"
INVALID_FILE_NAME = "INVALID_FILE_NAME"
INVALID_MIME_TYPE = "INVALID_MIME_TYPE"
UNSUPPORTED_EXTENSION = "UNSUPPORTED_EXTENSION"
EMPTY_FILE = "EMPTY_FILE"
class FileValidationException(Exception):
def __init__(self, error: FileValidationError):
self.error = error
FILE_VALIDATION_ERROR_STATUS_CODES = {
FileValidationError.MISSING_SIZE: STATUS_CODE_LENGTH_REQUIRED,
FileValidationError.FILE_TOO_LARGE: STATUS_CODE_CONTENT_TOO_LARGE,
FileValidationError.MISSING_FILE_NAME: STATUS_CODE_BAD_REQUEST,
FileValidationError.FILE_NAME_TOO_LARGE: STATUS_CODE_BAD_REQUEST,
FileValidationError.INVALID_FILE_NAME: STATUS_CODE_BAD_REQUEST,
FileValidationError.INVALID_MIME_TYPE: STATUS_CODE_UNSUPPORTED_MEDIA_TYPE,
FileValidationError.UNSUPPORTED_EXTENSION: STATUS_CODE_UNSUPPORTED_MEDIA_TYPE,
FileValidationError.EMPTY_FILE: STATUS_CODE_BAD_REQUEST,
}
class FileExtractionError(Enum):
INVALID_MIME_TYPE = "INVALID_MIME_TYPE"
NO_TEXT = "NO_TEXT"
TEXT_EXTRACTION_TIMEOUT = "TEXT_EXTRACTION_TIMEOUT"
UNSAFE_ZIP = "UNSAFE_ZIP"
FILE_TOO_LARGE = "FILE_TOO_LARGE"
MALFORMED_FILE = "MALFORMED_FILE"
TEXT_TOO_LARGE = "TEXT_TOO_LARGE"
class FileExtractionException(Exception):
def __init__(self, error: FileExtractionError):
self.error = error
FILE_EXTRACTION_ERROR_STATUS_CODES = {
FileExtractionError.INVALID_MIME_TYPE: STATUS_CODE_UNSUPPORTED_MEDIA_TYPE,
FileExtractionError.NO_TEXT: STATUS_CODE_BAD_REQUEST,
FileExtractionError.TEXT_EXTRACTION_TIMEOUT: STATUS_CODE_INTERNAL_SERVER_ERROR,
FileExtractionError.UNSAFE_ZIP: STATUS_CODE_INTERNAL_SERVER_ERROR,
FileExtractionError.FILE_TOO_LARGE: STATUS_CODE_CONTENT_TOO_LARGE,
FileExtractionError.MALFORMED_FILE: STATUS_CODE_BAD_REQUEST,
FileExtractionError.TEXT_TOO_LARGE: STATUS_CODE_UNPROCESSABLE_CONTENT,
}
class FileDocumentStoreError(Enum):
FILE_ALREADY_EXISTS = "FILE_ALREADY_EXISTS"
EXCEED_MAX_FILE_SIZE = "EXCEED_MAX_FILE_SIZE"
class FileDocumentStoreException(Exception):
def __init__(self, error: FileDocumentStoreError):
self.error = error
FILE_DOCUMENT_STORE_ERROR_STATUS_CODES = {
FileDocumentStoreError.FILE_ALREADY_EXISTS: STATUS_CODE_CONFLICT,
FileDocumentStoreError.EXCEED_MAX_FILE_SIZE: STATUS_CODE_EXCEED_SIZE_LIMIT,
}