glasswall.determine_file_type.helpers

 1from typing import Union
 2
 3from glasswall.determine_file_type.classes import FileTypeEnum, FileTypeEnumError, FileTypeEnumSuccess
 4
 5error_list = FileTypeEnumError.__subclasses__()
 6success_list = FileTypeEnumSuccess.__subclasses__()
 7
 8int_str_map = {
 9    fte_class.integer: fte_class.string
10    for fte_class in error_list + success_list
11    if all(key in fte_class.__dict__.keys() for key in ["integer", "string"])
12}
13
14str_int_map = {
15    fte_class.string: fte_class.integer
16    for fte_class in error_list + success_list
17    if all(key in fte_class.__dict__.keys() for key in ["integer", "string"])
18}
19
20int_class_map = {
21    fte_class.integer: fte_class
22    for fte_class in error_list + success_list
23    if all(key in fte_class.__dict__.keys() for key in ["integer"])
24}
25
26
27def is_success(file_type: Union[int, str, FileTypeEnumError, FileTypeEnumSuccess]):
28    """ Checks if a file type corresponds to a success.
29
30    Args:
31        file_type (Union[int, str, FileTypeEnumError, FileTypeEnumSuccess]): An enum int returned by Glasswall, str representation of file type, or subclass of FileTypeEnum.
32
33    Returns:
34        bool: Returns True if file_type corresponds to a successful file type, else False.
35    """
36    if isinstance(file_type, int):
37        return file_type in [s.integer for s in success_list]
38    elif isinstance(file_type, str):
39        return file_type in [s.string for s in success_list]
40    elif issubclass(file_type, FileTypeEnum):
41        return issubclass(file_type, FileTypeEnumSuccess)
42    else:
43        raise TypeError(file_type)
44
45
46def file_type_int_to_str(integer: int):
47    """ Converts a file type enum int to a string.
48
49    Args:
50        integer (int): The enum int that Glasswall returns when ing a file type.
51
52    Returns:
53        Union[type(None), str]: The string representation of a file type, or None. """
54    return int_str_map.get(integer, None)
55
56
57def file_type_str_to_int(string: str):
58    """ Converts a file type string to an enum int.
59
60    Args:
61        string (str): A string representation of a file type.
62
63    Returns:
64        Union[type(None), int]: The enum int that Glasswall returns when determining a file type, or None. """
65    return str_int_map.get(string, None)
success_list = [<class 'glasswall.determine_file_type.successes.ft_pdf'>, <class 'glasswall.determine_file_type.successes.ft_doc'>, <class 'glasswall.determine_file_type.successes.ft_docx'>, <class 'glasswall.determine_file_type.successes.ft_ppt'>, <class 'glasswall.determine_file_type.successes.ft_pptx'>, <class 'glasswall.determine_file_type.successes.ft_xls'>, <class 'glasswall.determine_file_type.successes.ft_xlsx'>, <class 'glasswall.determine_file_type.successes.ft_png'>, <class 'glasswall.determine_file_type.successes.ft_jpeg'>, <class 'glasswall.determine_file_type.successes.ft_gif'>, <class 'glasswall.determine_file_type.successes.ft_emf'>, <class 'glasswall.determine_file_type.successes.ft_wmf'>, <class 'glasswall.determine_file_type.successes.ft_rtf'>, <class 'glasswall.determine_file_type.successes.ft_bmp'>, <class 'glasswall.determine_file_type.successes.ft_tiff'>, <class 'glasswall.determine_file_type.successes.ft_pe'>, <class 'glasswall.determine_file_type.successes.ft_macho'>, <class 'glasswall.determine_file_type.successes.ft_elf'>, <class 'glasswall.determine_file_type.successes.ft_mp4'>, <class 'glasswall.determine_file_type.successes.ft_mp3'>, <class 'glasswall.determine_file_type.successes.ft_mp2'>, <class 'glasswall.determine_file_type.successes.ft_wav'>, <class 'glasswall.determine_file_type.successes.ft_mpg'>, <class 'glasswall.determine_file_type.successes.ft_coff'>, <class 'glasswall.determine_file_type.successes.ft_json'>, <class 'glasswall.determine_file_type.successes.ft_vbamacros'>, <class 'glasswall.determine_file_type.successes.ft_svg'>, <class 'glasswall.determine_file_type.successes.ft_webp'>, <class 'glasswall.determine_file_type.successes.ft_dylib'>, <class 'glasswall.determine_file_type.successes.ft_utf8'>, <class 'glasswall.determine_file_type.successes.ft_ascii'>, <class 'glasswall.determine_file_type.successes.ft_zip'>, <class 'glasswall.determine_file_type.successes.ft_gzip'>, <class 'glasswall.determine_file_type.successes.ft_bzip2'>, <class 'glasswall.determine_file_type.successes.ft_7zip'>, <class 'glasswall.determine_file_type.successes.ft_rar'>, <class 'glasswall.determine_file_type.successes.ft_tar'>, <class 'glasswall.determine_file_type.successes.ft_xz'>, <class 'glasswall.determine_file_type.successes.ft_ooxml'>, <class 'glasswall.determine_file_type.successes.ft_office'>, <class 'glasswall.determine_file_type.successes.ft_bin'>, <class 'glasswall.determine_file_type.successes.ft_xml'>, <class 'glasswall.determine_file_type.successes.ft_docxPackageInCfb'>, <class 'glasswall.determine_file_type.successes.ft_xlsxPackageInCfb'>, <class 'glasswall.determine_file_type.successes.ft_pptxPackageInCfb'>, <class 'glasswall.determine_file_type.successes.ft_xlscore'>, <class 'glasswall.determine_file_type.successes.ft_doccore'>, <class 'glasswall.determine_file_type.successes.ft_pptcore'>, <class 'glasswall.determine_file_type.successes.ft_picturestream'>, <class 'glasswall.determine_file_type.successes.ft_printersettings'>, <class 'glasswall.determine_file_type.successes.ft_equationnative'>, <class 'glasswall.determine_file_type.successes.ft_compobj'>, <class 'glasswall.determine_file_type.successes.ft_docsummary'>, <class 'glasswall.determine_file_type.successes.ft_opc'>, <class 'glasswall.determine_file_type.successes.ft_cfb'>, <class 'glasswall.determine_file_type.successes.ft_interchangePackage'>, <class 'glasswall.determine_file_type.successes.ft_pdf_core2'>, <class 'glasswall.determine_file_type.successes.ft_fi'>, <class 'glasswall.determine_file_type.successes.ft_pdfContentStream'>, <class 'glasswall.determine_file_type.successes.ft_rebuild'>, <class 'glasswall.determine_file_type.successes.ft_gwlens'>]
int_str_map = {0: 'unknown', 1: 'fileIssues', 2: 'bufferIssues', 3: 'internalIssues', 4: 'licenseExpired', 5: 'passwordProtectedOpcFile', 6: 'nullPointerArgument', 7: 'unsupportedFileType', 16: 'pdf', 17: 'doc', 18: 'docx', 19: 'ppt', 20: 'pptx', 21: 'xls', 22: 'xlsx', 23: 'png', 24: 'jpeg', 25: 'gif', 26: 'emf', 27: 'wmf', 28: 'rtf', 29: 'bmp', 30: 'tiff', 31: 'pe', 32: 'macho', 33: 'elf', 34: 'mp4', 35: 'mp3', 36: 'mp2', 37: 'wav', 38: 'mpg', 39: 'coff', 40: 'json', 41: 'vba', 42: 'svg', 43: 'webp', 44: 'dylib', 45: 'utf8', 46: 'ascii', 256: 'zip', 257: 'gz', 258: 'bz2', 259: '7z', 260: 'rar', 261: 'tar', 262: 'xz', 512: 'ooxml', 513: 'office', 514: 'bin', 515: 'xml', 768: 'docxPackageInCfb', 769: 'xlsxPackageInCfb', 770: 'pptxPackageInCfb', 771: 'xlscore', 772: 'doccore', 773: 'pptcore', 774: 'picturestream', 775: 'printersettings', 776: 'equationnative', 777: 'compobj', 778: 'docsummary', 779: 'opc', 780: 'cfb', 781: 'interchangePackage', 782: 'pdf_core2', 783: 'fi', 784: 'pdfContentStream', 785: 'rebuild', 786: 'gwlens'}
str_int_map = {'unknown': 0, 'fileIssues': 1, 'bufferIssues': 2, 'internalIssues': 3, 'licenseExpired': 4, 'passwordProtectedOpcFile': 5, 'nullPointerArgument': 6, 'unsupportedFileType': 7, 'pdf': 16, 'doc': 17, 'docx': 18, 'ppt': 19, 'pptx': 20, 'xls': 21, 'xlsx': 22, 'png': 23, 'jpeg': 24, 'gif': 25, 'emf': 26, 'wmf': 27, 'rtf': 28, 'bmp': 29, 'tiff': 30, 'pe': 31, 'macho': 32, 'elf': 33, 'mp4': 34, 'mp3': 35, 'mp2': 36, 'wav': 37, 'mpg': 38, 'coff': 39, 'json': 40, 'vba': 41, 'svg': 42, 'webp': 43, 'dylib': 44, 'utf8': 45, 'ascii': 46, 'zip': 256, 'gz': 257, 'bz2': 258, '7z': 259, 'rar': 260, 'tar': 261, 'xz': 262, 'ooxml': 512, 'office': 513, 'bin': 514, 'xml': 515, 'docxPackageInCfb': 768, 'xlsxPackageInCfb': 769, 'pptxPackageInCfb': 770, 'xlscore': 771, 'doccore': 772, 'pptcore': 773, 'picturestream': 774, 'printersettings': 775, 'equationnative': 776, 'compobj': 777, 'docsummary': 778, 'opc': 779, 'cfb': 780, 'interchangePackage': 781, 'pdf_core2': 782, 'fi': 783, 'pdfContentStream': 784, 'rebuild': 785, 'gwlens': 786}
int_class_map = {0: <class 'glasswall.determine_file_type.errors.ft_unknown'>, 1: <class 'glasswall.determine_file_type.errors.ft_fileIssues'>, 2: <class 'glasswall.determine_file_type.errors.ft_bufferIssues'>, 3: <class 'glasswall.determine_file_type.errors.ft_internalIssues'>, 4: <class 'glasswall.determine_file_type.errors.ft_licenseExpired'>, 5: <class 'glasswall.determine_file_type.errors.ft_passwordProtectedOpcFile'>, 6: <class 'glasswall.determine_file_type.errors.ft_nullPointerArgument'>, 7: <class 'glasswall.determine_file_type.errors.ft_unsupportedFileType'>, 16: <class 'glasswall.determine_file_type.successes.ft_pdf'>, 17: <class 'glasswall.determine_file_type.successes.ft_doc'>, 18: <class 'glasswall.determine_file_type.successes.ft_docx'>, 19: <class 'glasswall.determine_file_type.successes.ft_ppt'>, 20: <class 'glasswall.determine_file_type.successes.ft_pptx'>, 21: <class 'glasswall.determine_file_type.successes.ft_xls'>, 22: <class 'glasswall.determine_file_type.successes.ft_xlsx'>, 23: <class 'glasswall.determine_file_type.successes.ft_png'>, 24: <class 'glasswall.determine_file_type.successes.ft_jpeg'>, 25: <class 'glasswall.determine_file_type.successes.ft_gif'>, 26: <class 'glasswall.determine_file_type.successes.ft_emf'>, 27: <class 'glasswall.determine_file_type.successes.ft_wmf'>, 28: <class 'glasswall.determine_file_type.successes.ft_rtf'>, 29: <class 'glasswall.determine_file_type.successes.ft_bmp'>, 30: <class 'glasswall.determine_file_type.successes.ft_tiff'>, 31: <class 'glasswall.determine_file_type.successes.ft_pe'>, 32: <class 'glasswall.determine_file_type.successes.ft_macho'>, 33: <class 'glasswall.determine_file_type.successes.ft_elf'>, 34: <class 'glasswall.determine_file_type.successes.ft_mp4'>, 35: <class 'glasswall.determine_file_type.successes.ft_mp3'>, 36: <class 'glasswall.determine_file_type.successes.ft_mp2'>, 37: <class 'glasswall.determine_file_type.successes.ft_wav'>, 38: <class 'glasswall.determine_file_type.successes.ft_mpg'>, 39: <class 'glasswall.determine_file_type.successes.ft_coff'>, 40: <class 'glasswall.determine_file_type.successes.ft_json'>, 41: <class 'glasswall.determine_file_type.successes.ft_vbamacros'>, 42: <class 'glasswall.determine_file_type.successes.ft_svg'>, 43: <class 'glasswall.determine_file_type.successes.ft_webp'>, 44: <class 'glasswall.determine_file_type.successes.ft_dylib'>, 45: <class 'glasswall.determine_file_type.successes.ft_utf8'>, 46: <class 'glasswall.determine_file_type.successes.ft_ascii'>, 256: <class 'glasswall.determine_file_type.successes.ft_zip'>, 257: <class 'glasswall.determine_file_type.successes.ft_gzip'>, 258: <class 'glasswall.determine_file_type.successes.ft_bzip2'>, 259: <class 'glasswall.determine_file_type.successes.ft_7zip'>, 260: <class 'glasswall.determine_file_type.successes.ft_rar'>, 261: <class 'glasswall.determine_file_type.successes.ft_tar'>, 262: <class 'glasswall.determine_file_type.successes.ft_xz'>, 512: <class 'glasswall.determine_file_type.successes.ft_ooxml'>, 513: <class 'glasswall.determine_file_type.successes.ft_office'>, 514: <class 'glasswall.determine_file_type.successes.ft_bin'>, 515: <class 'glasswall.determine_file_type.successes.ft_xml'>, 768: <class 'glasswall.determine_file_type.successes.ft_docxPackageInCfb'>, 769: <class 'glasswall.determine_file_type.successes.ft_xlsxPackageInCfb'>, 770: <class 'glasswall.determine_file_type.successes.ft_pptxPackageInCfb'>, 771: <class 'glasswall.determine_file_type.successes.ft_xlscore'>, 772: <class 'glasswall.determine_file_type.successes.ft_doccore'>, 773: <class 'glasswall.determine_file_type.successes.ft_pptcore'>, 774: <class 'glasswall.determine_file_type.successes.ft_picturestream'>, 775: <class 'glasswall.determine_file_type.successes.ft_printersettings'>, 776: <class 'glasswall.determine_file_type.successes.ft_equationnative'>, 777: <class 'glasswall.determine_file_type.successes.ft_compobj'>, 778: <class 'glasswall.determine_file_type.successes.ft_docsummary'>, 779: <class 'glasswall.determine_file_type.successes.ft_opc'>, 780: <class 'glasswall.determine_file_type.successes.ft_cfb'>, 781: <class 'glasswall.determine_file_type.successes.ft_interchangePackage'>, 782: <class 'glasswall.determine_file_type.successes.ft_pdf_core2'>, 783: <class 'glasswall.determine_file_type.successes.ft_fi'>, 784: <class 'glasswall.determine_file_type.successes.ft_pdfContentStream'>, 785: <class 'glasswall.determine_file_type.successes.ft_rebuild'>, 786: <class 'glasswall.determine_file_type.successes.ft_gwlens'>}
30def is_success(file_type: Union[int, str, FileTypeEnumError, FileTypeEnumSuccess]):
31    """ Checks if a file type corresponds to a success.
32
33    Args:
34        file_type (Union[int, str, FileTypeEnumError, FileTypeEnumSuccess]): An enum int returned by Glasswall, str representation of file type, or subclass of FileTypeEnum.
35
36    Returns:
37        bool: Returns True if file_type corresponds to a successful file type, else False.
38    """
39    if isinstance(file_type, int):
40        return file_type in [s.integer for s in success_list]
41    elif isinstance(file_type, str):
42        return file_type in [s.string for s in success_list]
43    elif issubclass(file_type, FileTypeEnum):
44        return issubclass(file_type, FileTypeEnumSuccess)
45    else:
46        raise TypeError(file_type)

Checks if a file type corresponds to a success.

Args: file_type (Union[int, str, FileTypeEnumError, FileTypeEnumSuccess]): An enum int returned by Glasswall, str representation of file type, or subclass of FileTypeEnum.

Returns: bool: Returns True if file_type corresponds to a successful file type, else False.

def file_type_int_to_str(integer: int):
49def file_type_int_to_str(integer: int):
50    """ Converts a file type enum int to a string.
51
52    Args:
53        integer (int): The enum int that Glasswall returns when ing a file type.
54
55    Returns:
56        Union[type(None), str]: The string representation of a file type, or None. """
57    return int_str_map.get(integer, None)

Converts a file type enum int to a string.

Args: integer (int): The enum int that Glasswall returns when ing a file type.

Returns: Union[type(None), str]: The string representation of a file type, or None.

def file_type_str_to_int(string: str):
60def file_type_str_to_int(string: str):
61    """ Converts a file type string to an enum int.
62
63    Args:
64        string (str): A string representation of a file type.
65
66    Returns:
67        Union[type(None), int]: The enum int that Glasswall returns when determining a file type, or None. """
68    return str_int_map.get(string, None)

Converts a file type string to an enum int.

Args: string (str): A string representation of a file type.

Returns: Union[type(None), int]: The enum int that Glasswall returns when determining a file type, or None.