aboutsummaryrefslogtreecommitdiff
path: root/src/mime.zig
blob: c60ab74a9c0a3fa50efee910f5a31b89f5b28e1b (plain)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const std = @import("std");

pub fn get_type(file_name: []const u8) []const u8 {
    const suffix_pos = std.mem.lastIndexOfScalar(u8, file_name, '.') orelse file_name.len;
    const suffix = file_name[suffix_pos..];
    return content_types.get(suffix) orelse "text/plain";
}

pub const content_types = std.StaticStringMap([]const u8).initComptime(.{
    .{ ".aac", "audio/aac" },
    .{ ".abw", "application/x-abiword" },
    .{ ".apng", "image/apng" },
    .{ ".arc", "application/x-freearc" },
    .{ ".avif", "image/avif" },
    .{ ".avi", "video/x-msvideo" },
    .{ ".azw", "application/vnd.amazon.ebook" },
    .{ ".bin", "application/octet-stream" },
    .{ ".bmp", "image/bmp" },
    .{ ".bz", "application/x-bzip" },
    .{ ".bz2", "application/x-bzip2" },
    .{ ".cda", "application/x-cdf" },
    .{ ".csh", "application/x-csh" },
    .{ ".css", "text/css" },
    .{ ".csv", "text/csv" },
    .{ ".doc", "application/msword" },
    .{ ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" },
    .{ ".eot", "application/vnd.ms-fontobject" },
    .{ ".epub", "application/epub+zip" },
    .{ ".gz", "application/gzip." },
    .{ ".gif", "image/gif" },
    .{ ".htm", "text/html" },
    .{ ".html", "text/html" },
    .{ ".ico", "image/vnd.microsoft.icon" },
    .{ ".ics", "text/calendar" },
    .{ ".jar", "application/java-archive" },
    .{ ".jpeg", "image/jpeg" },
    .{ ".jpg", "image/jpeg" },
    .{ ".js", "text/javascript" },
    .{ ".json", "application/json" },
    .{ ".jsonld", "application/ld+json" },
    .{ ".md", "text/markdown" },
    .{ ".mid, .midi", "audio/midi," },
    .{ ".mjs", "text/javascript" },
    .{ ".mp3", "audio/mpeg" },
    .{ ".mp4", "video/mp4" },
    .{ ".mpeg", "video/mpeg" },
    .{ ".mpkg", "application/vnd.apple.installer+xml" },
    .{ ".odp", "application/vnd.oasis.opendocument.presentation" },
    .{ ".ods", "application/vnd.oasis.opendocument.spreadsheet" },
    .{ ".odt", "application/vnd.oasis.opendocument.text" },
    .{ ".oga", "audio/ogg" },
    .{ ".ogv", "video/ogg" },
    .{ ".ogx", "application/ogg" },
    .{ ".opus", "audio/ogg" },
    .{ ".otf", "font/otf" },
    .{ ".png", "image/png" },
    .{ ".pdf", "application/pdf" },
    .{ ".php", "application/x-httpd-php" },
    .{ ".ppt", "application/vnd.ms-powerpoint" },
    .{ ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation" },
    .{ ".rar", "application/vnd.rar" },
    .{ ".rtf", "application/rtf" },
    .{ ".sh", "application/x-sh" },
    .{ ".svg", "image/svg+xml" },
    .{ ".tar", "application/x-tar" },
    .{ ".tif, .tiff", "image/tiff" },
    .{ ".ts", "video/mp2t" },
    .{ ".ttf", "font/ttf" },
    .{ ".txt", "text/plain" },
    .{ ".vsd", "application/vnd.visio" },
    .{ ".wav", "audio/wav" },
    .{ ".weba", "audio/webm" },
    .{ ".webm", "video/webm" },
    .{ ".webmanifest", "application/manifest+json" },
    .{ ".webp", "image/webp" },
    .{ ".woff", "font/woff" },
    .{ ".woff2", "font/woff2" },
    .{ ".xhtml", "application/xhtml+xml" },
    .{ ".xls", "application/vnd.ms-excel" },
    .{ ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },
    .{ ".xml", "application/xml" },
    .{ ".xul", "application/vnd.mozilla.xul+xml" },
    .{ ".zip", "application/zip." },
    .{ ".3gp", "video/3gpp;" },
    .{ ".3g2", "video/3gpp2;" },
    .{ ".7z", "application/x-7z-compressed" },
});