from enum import Enum from constants import ( STATUS_CODE_BAD_REQUEST, STATUS_CODE_CONTENT_TOO_LARGE, STATUS_CODE_INTERNAL_SERVER_ERROR, STATUS_CODE_LENGTH_REQUIRED, STATUS_CODE_UNSUPPORTED_MEDIA_TYPE, ) 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" 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, }