"""Helper for file-related functions.""" from enum import Enum from os import path from typing import Any class FileType(Enum): """Enum of various file types.""" AUDIO = 1 IMAGE = 2 class FileHelper: """File Helper utility class.""" @staticmethod def _get_extension(file_path: str) -> str: """Get file extension from file.""" return path.splitext(file_path)[1] @staticmethod def _file_info() -> dict[str, Any]: """Return a dictionary mapping extension to Content Type and File Type.""" return { "jpg": {"content_type": "image/jpeg", FileType: FileType.IMAGE}, "jpeg": {"content_type": "image/jpeg", FileType: FileType.IMAGE}, "tiff": {"content_type": "image/tiff", FileType: FileType.IMAGE}, "tif": {"content_type": "image/tiff", FileType: FileType.IMAGE}, "wav": {"content_type": "audio/wav", FileType: FileType.AUDIO}, "m4a": {"content_type": "audio/x-m4a", FileType: FileType.AUDIO}, "flac": {"content_type": "audio/flac", FileType: FileType.AUDIO}, # broken asset data for v2 lambdas statuses negative testing # FileType.AUDIO is on purpose here "txt": {"content_type": "txt", FileType: FileType.AUDIO}, } @staticmethod def get_file_data_from_asset(asset_file: str) -> dict[str, Any]: """Return file extension, content type and file type from an asset.""" file_ext = FileHelper._get_extension(asset_file)[1:] content_type = FileHelper._file_info()[file_ext]["content_type"] file_type = FileHelper._file_info()[file_ext][FileType] return { "file_ext": file_ext, "content_type": content_type, "file_type": file_type, }