| | | 1 | | using Anichron.Core.Domain; |
| | | 2 | | |
| | | 3 | | namespace Anichron.Worker.Ingestion; |
| | | 4 | | |
| | | 5 | | internal static class MediaTypeDetector |
| | | 6 | | { |
| | 1 | 7 | | private static readonly Dictionary<string, MediaType> extensionMap = |
| | 1 | 8 | | new(StringComparer.OrdinalIgnoreCase) |
| | 1 | 9 | | { |
| | 1 | 10 | | [".jpg"] = MediaType.Image, |
| | 1 | 11 | | [".jpeg"] = MediaType.Image, |
| | 1 | 12 | | [".png"] = MediaType.Image, |
| | 1 | 13 | | [".heic"] = MediaType.Image, |
| | 1 | 14 | | [".heif"] = MediaType.Image, |
| | 1 | 15 | | [".gif"] = MediaType.Image, |
| | 1 | 16 | | [".webp"] = MediaType.Image, |
| | 1 | 17 | | [".tiff"] = MediaType.Image, |
| | 1 | 18 | | [".tif"] = MediaType.Image, |
| | 1 | 19 | | [".bmp"] = MediaType.Image, |
| | 1 | 20 | | [".mov"] = MediaType.Video, |
| | 1 | 21 | | [".mp4"] = MediaType.Video, |
| | 1 | 22 | | [".m4v"] = MediaType.Video, |
| | 1 | 23 | | [".avi"] = MediaType.Video, |
| | 1 | 24 | | [".mkv"] = MediaType.Video, |
| | 1 | 25 | | [".wmv"] = MediaType.Video, |
| | 1 | 26 | | }; |
| | | 27 | | |
| | | 28 | | public static MediaType? Detect(string filePath) |
| | 36 | 29 | | { |
| | 36 | 30 | | var extension = Path.GetExtension(filePath); |
| | 36 | 31 | | return extensionMap.TryGetValue(extension, out var type) ? type : null; |
| | 36 | 32 | | } |
| | | 33 | | } |