File size: 2,247 Bytes
f80f41e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389d6f7
f80f41e
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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,
}