1 package mimetype
2
3 import (
4 "sync"
5
6 "github.com/gabriel-vasile/mimetype/internal/magic"
7 )
8
9
10
11
12
13
14
15
16
17
18 var root = newMIME("application/octet-stream", "",
19 func([]byte, uint32) bool { return true },
20 xpm, sevenZ, zip, pdf, fdf, ole, ps, psd, p7s, ogg, png, jpg, jxl, jp2, jpx,
21 jpm, jxs, gif, webp, exe, elf, ar, tar, xar, bz2, fits, tiff, bmp, ico, mp3, flac,
22 midi, ape, musePack, amr, wav, aiff, au, mpeg, quickTime, mqv, mp4, webM,
23 threeGP, threeG2, avi, flv, mkv, asf, aac, voc, aMp4, m4a, m3u, m4v, rmvb,
24 gzip, class, swf, crx, ttf, woff, woff2, otf, ttc, eot, wasm, shx, dbf, dcm, rar,
25 djvu, mobi, lit, bpg, sqlite3, dwg, nes, lnk, macho, qcp, icns, heic,
26 heicSeq, heif, heifSeq, hdr, mrc, mdb, accdb, zstd, cab, rpm, xz, lzip,
27 torrent, cpio, tzif, xcf, pat, gbr, glb, avif, cabIS, jxr,
28
29 text,
30 )
31
32
33
34
35 var errMIME = newMIME("application/octet-stream", "", func([]byte, uint32) bool { return false })
36
37
38 var mu = &sync.RWMutex{}
39
40
41 var (
42 xz = newMIME("application/x-xz", ".xz", magic.Xz)
43 gzip = newMIME("application/gzip", ".gz", magic.Gzip).alias(
44 "application/x-gzip", "application/x-gunzip", "application/gzipped",
45 "application/gzip-compressed", "application/x-gzip-compressed",
46 "gzip/document")
47 sevenZ = newMIME("application/x-7z-compressed", ".7z", magic.SevenZ)
48 zip = newMIME("application/zip", ".zip", magic.Zip, xlsx, docx, pptx, epub, jar, odt, ods, odp, odg, odf, odc, sxc).
49 alias("application/x-zip", "application/x-zip-compressed")
50 tar = newMIME("application/x-tar", ".tar", magic.Tar)
51 xar = newMIME("application/x-xar", ".xar", magic.Xar)
52 bz2 = newMIME("application/x-bzip2", ".bz2", magic.Bz2)
53 pdf = newMIME("application/pdf", ".pdf", magic.Pdf).
54 alias("application/x-pdf")
55 fdf = newMIME("application/vnd.fdf", ".fdf", magic.Fdf)
56 xlsx = newMIME("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".xlsx", magic.Xlsx)
57 docx = newMIME("application/vnd.openxmlformats-officedocument.wordprocessingml.document", ".docx", magic.Docx)
58 pptx = newMIME("application/vnd.openxmlformats-officedocument.presentationml.presentation", ".pptx", magic.Pptx)
59 epub = newMIME("application/epub+zip", ".epub", magic.Epub)
60 jar = newMIME("application/jar", ".jar", magic.Jar)
61 ole = newMIME("application/x-ole-storage", "", magic.Ole, msi, aaf, msg, xls, pub, ppt, doc)
62 msi = newMIME("application/x-ms-installer", ".msi", magic.Msi).
63 alias("application/x-windows-installer", "application/x-msi")
64 aaf = newMIME("application/octet-stream", ".aaf", magic.Aaf)
65 doc = newMIME("application/msword", ".doc", magic.Doc).
66 alias("application/vnd.ms-word")
67 ppt = newMIME("application/vnd.ms-powerpoint", ".ppt", magic.Ppt).
68 alias("application/mspowerpoint")
69 pub = newMIME("application/vnd.ms-publisher", ".pub", magic.Pub)
70 xls = newMIME("application/vnd.ms-excel", ".xls", magic.Xls).
71 alias("application/msexcel")
72 msg = newMIME("application/vnd.ms-outlook", ".msg", magic.Msg)
73 ps = newMIME("application/postscript", ".ps", magic.Ps)
74 fits = newMIME("application/fits", ".fits", magic.Fits)
75 ogg = newMIME("application/ogg", ".ogg", magic.Ogg, oggAudio, oggVideo).
76 alias("application/x-ogg")
77 oggAudio = newMIME("audio/ogg", ".oga", magic.OggAudio)
78 oggVideo = newMIME("video/ogg", ".ogv", magic.OggVideo)
79 text = newMIME("text/plain", ".txt", magic.Text, html, svg, xml, php, js, lua, perl, python, json, ndJSON, rtf, srt, tcl, csv, tsv, vCard, iCalendar, warc, vtt)
80 xml = newMIME("text/xml", ".xml", magic.XML, rss, atom, x3d, kml, xliff, collada, gml, gpx, tcx, amf, threemf, xfdf, owl2)
81 json = newMIME("application/json", ".json", magic.JSON, geoJSON, har)
82 har = newMIME("application/json", ".har", magic.HAR)
83 csv = newMIME("text/csv", ".csv", magic.Csv)
84 tsv = newMIME("text/tab-separated-values", ".tsv", magic.Tsv)
85 geoJSON = newMIME("application/geo+json", ".geojson", magic.GeoJSON)
86 ndJSON = newMIME("application/x-ndjson", ".ndjson", magic.NdJSON)
87 html = newMIME("text/html", ".html", magic.HTML)
88 php = newMIME("text/x-php", ".php", magic.Php)
89 rtf = newMIME("text/rtf", ".rtf", magic.Rtf)
90 js = newMIME("application/javascript", ".js", magic.Js).
91 alias("application/x-javascript", "text/javascript")
92 srt = newMIME("application/x-subrip", ".srt", magic.Srt).
93 alias("application/x-srt", "text/x-srt")
94 vtt = newMIME("text/vtt", ".vtt", magic.Vtt)
95 lua = newMIME("text/x-lua", ".lua", magic.Lua)
96 perl = newMIME("text/x-perl", ".pl", magic.Perl)
97 python = newMIME("text/x-python", ".py", magic.Python).
98 alias("text/x-script.python", "application/x-python")
99 tcl = newMIME("text/x-tcl", ".tcl", magic.Tcl).
100 alias("application/x-tcl")
101 vCard = newMIME("text/vcard", ".vcf", magic.VCard)
102 iCalendar = newMIME("text/calendar", ".ics", magic.ICalendar)
103 svg = newMIME("image/svg+xml", ".svg", magic.Svg)
104 rss = newMIME("application/rss+xml", ".rss", magic.Rss).
105 alias("text/rss")
106 owl2 = newMIME("application/owl+xml", ".owl", magic.Owl2)
107 atom = newMIME("application/atom+xml", ".atom", magic.Atom)
108 x3d = newMIME("model/x3d+xml", ".x3d", magic.X3d)
109 kml = newMIME("application/vnd.google-earth.kml+xml", ".kml", magic.Kml)
110 xliff = newMIME("application/x-xliff+xml", ".xlf", magic.Xliff)
111 collada = newMIME("model/vnd.collada+xml", ".dae", magic.Collada)
112 gml = newMIME("application/gml+xml", ".gml", magic.Gml)
113 gpx = newMIME("application/gpx+xml", ".gpx", magic.Gpx)
114 tcx = newMIME("application/vnd.garmin.tcx+xml", ".tcx", magic.Tcx)
115 amf = newMIME("application/x-amf", ".amf", magic.Amf)
116 threemf = newMIME("application/vnd.ms-package.3dmanufacturing-3dmodel+xml", ".3mf", magic.Threemf)
117 png = newMIME("image/png", ".png", magic.Png, apng)
118 apng = newMIME("image/vnd.mozilla.apng", ".png", magic.Apng)
119 jpg = newMIME("image/jpeg", ".jpg", magic.Jpg)
120 jxl = newMIME("image/jxl", ".jxl", magic.Jxl)
121 jp2 = newMIME("image/jp2", ".jp2", magic.Jp2)
122 jpx = newMIME("image/jpx", ".jpf", magic.Jpx)
123 jpm = newMIME("image/jpm", ".jpm", magic.Jpm).
124 alias("video/jpm")
125 jxs = newMIME("image/jxs", ".jxs", magic.Jxs)
126 xpm = newMIME("image/x-xpixmap", ".xpm", magic.Xpm)
127 bpg = newMIME("image/bpg", ".bpg", magic.Bpg)
128 gif = newMIME("image/gif", ".gif", magic.Gif)
129 webp = newMIME("image/webp", ".webp", magic.Webp)
130 tiff = newMIME("image/tiff", ".tiff", magic.Tiff)
131 bmp = newMIME("image/bmp", ".bmp", magic.Bmp).
132 alias("image/x-bmp", "image/x-ms-bmp")
133 ico = newMIME("image/x-icon", ".ico", magic.Ico)
134 icns = newMIME("image/x-icns", ".icns", magic.Icns)
135 psd = newMIME("image/vnd.adobe.photoshop", ".psd", magic.Psd).
136 alias("image/x-psd", "application/photoshop")
137 heic = newMIME("image/heic", ".heic", magic.Heic)
138 heicSeq = newMIME("image/heic-sequence", ".heic", magic.HeicSequence)
139 heif = newMIME("image/heif", ".heif", magic.Heif)
140 heifSeq = newMIME("image/heif-sequence", ".heif", magic.HeifSequence)
141 hdr = newMIME("image/vnd.radiance", ".hdr", magic.Hdr)
142 avif = newMIME("image/avif", ".avif", magic.AVIF)
143 mp3 = newMIME("audio/mpeg", ".mp3", magic.Mp3).
144 alias("audio/x-mpeg", "audio/mp3")
145 flac = newMIME("audio/flac", ".flac", magic.Flac)
146 midi = newMIME("audio/midi", ".midi", magic.Midi).
147 alias("audio/mid", "audio/sp-midi", "audio/x-mid", "audio/x-midi")
148 ape = newMIME("audio/ape", ".ape", magic.Ape)
149 musePack = newMIME("audio/musepack", ".mpc", magic.MusePack)
150 wav = newMIME("audio/wav", ".wav", magic.Wav).
151 alias("audio/x-wav", "audio/vnd.wave", "audio/wave")
152 aiff = newMIME("audio/aiff", ".aiff", magic.Aiff).alias("audio/x-aiff")
153 au = newMIME("audio/basic", ".au", magic.Au)
154 amr = newMIME("audio/amr", ".amr", magic.Amr).
155 alias("audio/amr-nb")
156 aac = newMIME("audio/aac", ".aac", magic.AAC)
157 voc = newMIME("audio/x-unknown", ".voc", magic.Voc)
158 aMp4 = newMIME("audio/mp4", ".mp4", magic.AMp4).
159 alias("audio/x-m4a", "audio/x-mp4a")
160 m4a = newMIME("audio/x-m4a", ".m4a", magic.M4a)
161 m3u = newMIME("application/vnd.apple.mpegurl", ".m3u", magic.M3u).
162 alias("audio/mpegurl")
163 m4v = newMIME("video/x-m4v", ".m4v", magic.M4v)
164 mp4 = newMIME("video/mp4", ".mp4", magic.Mp4)
165 webM = newMIME("video/webm", ".webm", magic.WebM).
166 alias("audio/webm")
167 mpeg = newMIME("video/mpeg", ".mpeg", magic.Mpeg)
168 quickTime = newMIME("video/quicktime", ".mov", magic.QuickTime)
169 mqv = newMIME("video/quicktime", ".mqv", magic.Mqv)
170 threeGP = newMIME("video/3gpp", ".3gp", magic.ThreeGP).
171 alias("video/3gp", "audio/3gpp")
172 threeG2 = newMIME("video/3gpp2", ".3g2", magic.ThreeG2).
173 alias("video/3g2", "audio/3gpp2")
174 avi = newMIME("video/x-msvideo", ".avi", magic.Avi).
175 alias("video/avi", "video/msvideo")
176 flv = newMIME("video/x-flv", ".flv", magic.Flv)
177 mkv = newMIME("video/x-matroska", ".mkv", magic.Mkv)
178 asf = newMIME("video/x-ms-asf", ".asf", magic.Asf).
179 alias("video/asf", "video/x-ms-wmv")
180 rmvb = newMIME("application/vnd.rn-realmedia-vbr", ".rmvb", magic.Rmvb)
181 class = newMIME("application/x-java-applet", ".class", magic.Class)
182 swf = newMIME("application/x-shockwave-flash", ".swf", magic.SWF)
183 crx = newMIME("application/x-chrome-extension", ".crx", magic.CRX)
184 ttf = newMIME("font/ttf", ".ttf", magic.Ttf).
185 alias("font/sfnt", "application/x-font-ttf", "application/font-sfnt")
186 woff = newMIME("font/woff", ".woff", magic.Woff)
187 woff2 = newMIME("font/woff2", ".woff2", magic.Woff2)
188 otf = newMIME("font/otf", ".otf", magic.Otf)
189 ttc = newMIME("font/collection", ".ttc", magic.Ttc)
190 eot = newMIME("application/vnd.ms-fontobject", ".eot", magic.Eot)
191 wasm = newMIME("application/wasm", ".wasm", magic.Wasm)
192 shp = newMIME("application/vnd.shp", ".shp", magic.Shp)
193 shx = newMIME("application/vnd.shx", ".shx", magic.Shx, shp)
194 dbf = newMIME("application/x-dbf", ".dbf", magic.Dbf)
195 exe = newMIME("application/vnd.microsoft.portable-executable", ".exe", magic.Exe)
196 elf = newMIME("application/x-elf", "", magic.Elf, elfObj, elfExe, elfLib, elfDump)
197 elfObj = newMIME("application/x-object", "", magic.ElfObj)
198 elfExe = newMIME("application/x-executable", "", magic.ElfExe)
199 elfLib = newMIME("application/x-sharedlib", ".so", magic.ElfLib)
200 elfDump = newMIME("application/x-coredump", "", magic.ElfDump)
201 ar = newMIME("application/x-archive", ".a", magic.Ar, deb).
202 alias("application/x-unix-archive")
203 deb = newMIME("application/vnd.debian.binary-package", ".deb", magic.Deb)
204 rpm = newMIME("application/x-rpm", ".rpm", magic.RPM)
205 dcm = newMIME("application/dicom", ".dcm", magic.Dcm)
206 odt = newMIME("application/vnd.oasis.opendocument.text", ".odt", magic.Odt, ott).
207 alias("application/x-vnd.oasis.opendocument.text")
208 ott = newMIME("application/vnd.oasis.opendocument.text-template", ".ott", magic.Ott).
209 alias("application/x-vnd.oasis.opendocument.text-template")
210 ods = newMIME("application/vnd.oasis.opendocument.spreadsheet", ".ods", magic.Ods, ots).
211 alias("application/x-vnd.oasis.opendocument.spreadsheet")
212 ots = newMIME("application/vnd.oasis.opendocument.spreadsheet-template", ".ots", magic.Ots).
213 alias("application/x-vnd.oasis.opendocument.spreadsheet-template")
214 odp = newMIME("application/vnd.oasis.opendocument.presentation", ".odp", magic.Odp, otp).
215 alias("application/x-vnd.oasis.opendocument.presentation")
216 otp = newMIME("application/vnd.oasis.opendocument.presentation-template", ".otp", magic.Otp).
217 alias("application/x-vnd.oasis.opendocument.presentation-template")
218 odg = newMIME("application/vnd.oasis.opendocument.graphics", ".odg", magic.Odg, otg).
219 alias("application/x-vnd.oasis.opendocument.graphics")
220 otg = newMIME("application/vnd.oasis.opendocument.graphics-template", ".otg", magic.Otg).
221 alias("application/x-vnd.oasis.opendocument.graphics-template")
222 odf = newMIME("application/vnd.oasis.opendocument.formula", ".odf", magic.Odf).
223 alias("application/x-vnd.oasis.opendocument.formula")
224 odc = newMIME("application/vnd.oasis.opendocument.chart", ".odc", magic.Odc).
225 alias("application/x-vnd.oasis.opendocument.chart")
226 sxc = newMIME("application/vnd.sun.xml.calc", ".sxc", magic.Sxc)
227 rar = newMIME("application/x-rar-compressed", ".rar", magic.RAR).
228 alias("application/x-rar")
229 djvu = newMIME("image/vnd.djvu", ".djvu", magic.DjVu)
230 mobi = newMIME("application/x-mobipocket-ebook", ".mobi", magic.Mobi)
231 lit = newMIME("application/x-ms-reader", ".lit", magic.Lit)
232 sqlite3 = newMIME("application/vnd.sqlite3", ".sqlite", magic.Sqlite).
233 alias("application/x-sqlite3")
234 dwg = newMIME("image/vnd.dwg", ".dwg", magic.Dwg).
235 alias("image/x-dwg", "application/acad", "application/x-acad",
236 "application/autocad_dwg", "application/dwg", "application/x-dwg",
237 "application/x-autocad", "drawing/dwg")
238 warc = newMIME("application/warc", ".warc", magic.Warc)
239 nes = newMIME("application/vnd.nintendo.snes.rom", ".nes", magic.Nes)
240 lnk = newMIME("application/x-ms-shortcut", ".lnk", magic.Lnk)
241 macho = newMIME("application/x-mach-binary", ".macho", magic.MachO)
242 qcp = newMIME("audio/qcelp", ".qcp", magic.Qcp)
243 mrc = newMIME("application/marc", ".mrc", magic.Marc)
244 mdb = newMIME("application/x-msaccess", ".mdb", magic.MsAccessMdb)
245 accdb = newMIME("application/x-msaccess", ".accdb", magic.MsAccessAce)
246 zstd = newMIME("application/zstd", ".zst", magic.Zstd)
247 cab = newMIME("application/vnd.ms-cab-compressed", ".cab", magic.Cab)
248 cabIS = newMIME("application/x-installshield", ".cab", magic.InstallShieldCab)
249 lzip = newMIME("application/lzip", ".lz", magic.Lzip).alias("application/x-lzip")
250 torrent = newMIME("application/x-bittorrent", ".torrent", magic.Torrent)
251 cpio = newMIME("application/x-cpio", ".cpio", magic.Cpio)
252 tzif = newMIME("application/tzif", "", magic.TzIf)
253 p7s = newMIME("application/pkcs7-signature", ".p7s", magic.P7s)
254 xcf = newMIME("image/x-xcf", ".xcf", magic.Xcf)
255 pat = newMIME("image/x-gimp-pat", ".pat", magic.Pat)
256 gbr = newMIME("image/x-gimp-gbr", ".gbr", magic.Gbr)
257 xfdf = newMIME("application/vnd.adobe.xfdf", ".xfdf", magic.Xfdf)
258 glb = newMIME("model/gltf-binary", ".glb", magic.Glb)
259 jxr = newMIME("image/jxr", ".jxr", magic.Jxr).alias("image/vnd.ms-photo")
260 )
261
View as plain text