1macro_rules! known_media_types {
2 ($cont:ident) => ($cont! {
3 Any (is_any): "any media type", "*", "*",
4 Binary (is_binary): "binary data", "application", "octet-stream",
5 Bytes (is_bytes): "binary data", "application", "octet-stream",
6 HTML (is_html): "HTML", "text", "html" ; "charset" => "utf-8",
7 Plain (is_plain): "plain text", "text", "plain" ; "charset" => "utf-8",
8 Text (is_text): "plain text", "text", "plain" ; "charset" => "utf-8",
9 JSON (is_json): "JSON", "application", "json",
10 MsgPack (is_msgpack): "MsgPack", "application", "msgpack",
11 Form (is_form): "forms", "application", "x-www-form-urlencoded",
12 JavaScript (is_javascript): "JavaScript", "text", "javascript",
13 CSS (is_css): "CSS", "text", "css" ; "charset" => "utf-8",
14 FormData (is_form_data): "multipart form data", "multipart", "form-data",
15 XML (is_xml): "XML", "text", "xml" ; "charset" => "utf-8",
16 OPF (is_opf): "OPF", "application", "oebps-package+xml",
17 XHTML (is_xhtml): "XHTML", "application", "xhtml+xml",
18 CSV (is_csv): "CSV", "text", "csv" ; "charset" => "utf-8",
19 PNG (is_png): "PNG", "image", "png",
20 GIF (is_gif): "GIF", "image", "gif",
21 BMP (is_bmp): "BMP", "image", "bmp",
22 JPEG (is_jpeg): "JPEG", "image", "jpeg",
23 WEBP (is_webp): "WEBP", "image", "webp",
24 AVIF (is_avif): "AVIF", "image", "avif",
25 SVG (is_svg): "SVG", "image", "svg+xml",
26 Icon (is_icon): "Icon", "image", "x-icon",
27 WEBM (is_webm): "WEBM", "video", "webm",
28 WEBA (is_weba): "WEBM Audio", "audio", "webm",
29 OGG (is_ogg): "OGG Video", "video", "ogg",
30 FLAC (is_flac): "FLAC", "audio", "flac",
31 WAV (is_wav): "WAV", "audio", "wav",
32 PDF (is_pdf): "PDF", "application", "pdf",
33 TTF (is_ttf): "TTF", "application", "font-sfnt",
34 OTF (is_otf): "OTF", "application", "font-sfnt",
35 WOFF (is_woff): "WOFF", "application", "font-woff",
36 WOFF2 (is_woff2): "WOFF2", "font", "woff2",
37 JsonApi (is_json_api): "JSON API", "application", "vnd.api+json",
38 WASM (is_wasm): "WASM", "application", "wasm",
39 TIFF (is_tiff): "TIFF", "image", "tiff",
40 AAC (is_aac): "AAC Audio", "audio", "aac",
41 Calendar (is_ical): "iCalendar", "text", "calendar",
42 MPEG (is_mpeg): "MPEG Video", "video", "mpeg",
43 TAR (is_tar): "tape archive", "application", "x-tar",
44 GZIP (is_gzip): "gzipped binary", "application", "gzip",
45 MOV (is_mov): "quicktime video", "video", "quicktime",
46 MP3 (is_mp3): "MPEG Audio", "audio", "mpeg",
47 MP4 (is_mp4): "MPEG4 Video", "video", "mp4",
48 ZIP (is_zip): "ZIP archive", "application", "zip",
49 CBZ (is_cbz): "Comic ZIP archive", "application", "vnd.comicbook+zip",
50 CBR (is_cbr): "Comic RAR compressed archive", "application", "vnd.comicbook-rar",
51 RAR (is_rar): "RAR compressed archive", "application", "vnd.rar",
52 EPUB (is_epub): "EPUB", "application", "epub+zip",
53 EventStream (is_event_stream): "SSE stream", "text", "event-stream",
54 Markdown (is_markdown): "markdown text", "text", "markdown" ; "charset" => "utf-8",
55 EXE (is_exe): "executable", "application", "vnd.microsoft.portable-executable",
56 })
57}
58
59macro_rules! known_extensions {
60 ($cont:ident) => ($cont! {
61 "txt" => Plain,
62 "html" => HTML,
63 "htm" => HTML,
64 "xml" => XML,
65 "opf" => OPF,
66 "xhtml" => XHTML,
67 "csv" => CSV,
68 "js" => JavaScript,
69 "mjs" => JavaScript,
70 "css" => CSS,
71 "json" => JSON,
72 "png" => PNG,
73 "gif" => GIF,
74 "bmp" => BMP,
75 "jpeg" => JPEG,
76 "jpg" => JPEG,
77 "webp" => WEBP,
78 "avif" => AVIF,
79 "svg" => SVG,
80 "ico" => Icon,
81 "flac" => FLAC,
82 "wav" => WAV,
83 "webm" => WEBM,
84 "weba" => WEBA,
85 "ogg" => OGG,
86 "ogv" => OGG,
87 "pdf" => PDF,
88 "ttf" => TTF,
89 "otf" => OTF,
90 "woff" => WOFF,
91 "woff2" => WOFF2,
92 "mp3" => MP3,
93 "mp4" => MP4,
94 "mpeg4" => MP4,
95 "wasm" => WASM,
96 "aac" => AAC,
97 "ics" => Calendar,
98 "bin" => Binary,
99 "iso" => Binary,
100 "dmg" => Binary,
101 "mpg" => MPEG,
102 "mpeg" => MPEG,
103 "tar" => TAR,
104 "gz" => GZIP,
105 "tif" => TIFF,
106 "tiff" => TIFF,
107 "mov" => MOV,
108 "zip" => ZIP,
109 "cbz" => CBZ,
110 "cbr" => CBR,
111 "rar" => RAR,
112 "epub" => EPUB,
113 "md" => Markdown,
114 "markdown" => Markdown,
115 "exe" => EXE,
116 })
117}
118
119macro_rules! known_shorthands {
120 ($cont:ident) => ($cont! {
121 "any" => Any,
122 "binary" => Binary,
123 "bytes" => Bytes,
124 "html" => HTML,
125 "plain" => Plain,
126 "text" => Text,
127 "json" => JSON,
128 "msgpack" => MsgPack,
129 "form" => Form,
130 "js" => JavaScript,
131 "css" => CSS,
132 "multipart" => FormData,
133 "xml" => XML,
134 "pdf" => PDF,
135 "markdown" => Markdown,
136 "md" => Markdown,
137 })
138}