| 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, |
| } |
|
|