mime.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  1. package tos
  2. import "path"
  3. var mime = map[string]string{
  4. "3gp": "video/3gpp",
  5. "7z": "application/x-7z-compressed",
  6. "abw": "application/x-abiword",
  7. "ai": "application/postscript",
  8. "aif": "audio/x-aiff",
  9. "aifc": "audio/x-aiff",
  10. "aiff": "audio/x-aiff",
  11. "alc": "chemical/x-alchemy",
  12. "amr": "audio/amr",
  13. "anx": "application/annodex",
  14. "apk": "application/vnd.android.package-archive",
  15. "appcache": "text/cache-manifest",
  16. "art": "image/x-jg",
  17. "asc": "text/plain",
  18. "asf": "video/x-ms-asf",
  19. "aso": "chemical/x-ncbi-asn1-binary",
  20. "asx": "video/x-ms-asf",
  21. "atom": "application/atom+xml",
  22. "atomcat": "application/atomcat+xml",
  23. "atomsrv": "application/atomserv+xml",
  24. "au": "audio/basic",
  25. "avi": "video/x-msvideo",
  26. "awb": "audio/amr-wb",
  27. "axa": "audio/annodex",
  28. "axv": "video/annodex",
  29. "b": "chemical/x-molconn-Z",
  30. "bak": "application/x-trash",
  31. "bat": "application/x-msdos-program",
  32. "bcpio": "application/x-bcpio",
  33. "bib": "text/x-bibtex",
  34. "bin": "application/octet-stream",
  35. "bmp": "image/x-ms-bmp",
  36. "boo": "text/x-boo",
  37. "book": "application/x-maker",
  38. "brf": "text/plain",
  39. "bsd": "chemical/x-crossfire",
  40. "c": "text/x-csrc",
  41. "c++": "text/x-c++src",
  42. "c3d": "chemical/x-chem3d",
  43. "cab": "application/x-cab",
  44. "cac": "chemical/x-cache",
  45. "cache": "chemical/x-cache",
  46. "cap": "application/vnd.tcpdump.pcap",
  47. "cascii": "chemical/x-cactvs-binary",
  48. "cat": "application/vnd.ms-pki.seccat",
  49. "cbin": "chemical/x-cactvs-binary",
  50. "cbr": "application/x-cbr",
  51. "cbz": "application/x-cbz",
  52. "cc": "text/x-c++src",
  53. "cda": "application/x-cdf",
  54. "cdf": "application/x-cdf",
  55. "cdr": "image/x-coreldraw",
  56. "cdt": "image/x-coreldrawtemplate",
  57. "cdx": "chemical/x-cdx",
  58. "cdy": "application/vnd.cinderella",
  59. "cef": "chemical/x-cxf",
  60. "cer": "chemical/x-cerius",
  61. "chm": "chemical/x-chemdraw",
  62. "chrt": "application/x-kchart",
  63. "cif": "chemical/x-cif",
  64. "class": "application/java-vm",
  65. "cls": "text/x-tex",
  66. "cmdf": "chemical/x-cmdf",
  67. "cml": "chemical/x-cml",
  68. "cod": "application/vnd.rim.cod",
  69. "com": "application/x-msdos-program",
  70. "cpa": "chemical/x-compass",
  71. "cpio": "application/x-cpio",
  72. "cpp": "text/x-c++src",
  73. "cpt": "application/mac-compactpro",
  74. "cr2": "image/x-canon-cr2",
  75. "crl": "application/x-pkcs7-crl",
  76. "crt": "application/x-x509-ca-cert",
  77. "crw": "image/x-canon-crw",
  78. "csd": "audio/csound",
  79. "csf": "chemical/x-cache-csf",
  80. "csh": "application/x-csh",
  81. "csm": "chemical/x-csml",
  82. "csml": "chemical/x-csml",
  83. "css": "text/css",
  84. "csv": "text/csv",
  85. "ctab": "chemical/x-cactvs-binary",
  86. "ctx": "chemical/x-ctx",
  87. "cu": "application/cu-seeme",
  88. "cub": "chemical/x-gaussian-cube",
  89. "cxf": "chemical/x-cxf",
  90. "cxx": "text/x-c++src",
  91. "d": "text/x-dsrc",
  92. "davmount": "application/davmount+xml",
  93. "dcm": "application/dicom",
  94. "dcr": "application/x-director",
  95. "ddeb": "application/vnd.debian.binary-package",
  96. "dif": "video/dv",
  97. "diff": "text/x-diff",
  98. "dir": "application/x-director",
  99. "djv": "image/vnd.djvu",
  100. "djvu": "image/vnd.djvu",
  101. "dl": "video/dl",
  102. "dll": "application/x-msdos-program",
  103. "dmg": "application/x-apple-diskimage",
  104. "dms": "application/x-dms",
  105. "doc": "application/msword",
  106. "docm": "application/vnd.ms-word.document.macroEnabled.12",
  107. "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  108. "dot": "application/msword",
  109. "dotm": "application/vnd.ms-word.template.macroEnabled.12",
  110. "dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
  111. "dv": "video/dv",
  112. "dvi": "application/x-dvi",
  113. "dx": "chemical/x-jcamp-dx",
  114. "dxr": "application/x-director",
  115. "emb": "chemical/x-embl-dl-nucleotide",
  116. "embl": "chemical/x-embl-dl-nucleotide",
  117. "eml": "message/rfc822",
  118. "eot": "application/vnd.ms-fontobject",
  119. "eps": "application/postscript",
  120. "eps2": "application/postscript",
  121. "eps3": "application/postscript",
  122. "epsf": "application/postscript",
  123. "epsi": "application/postscript",
  124. "erf": "image/x-epson-erf",
  125. "es": "application/ecmascript",
  126. "etx": "text/x-setext",
  127. "exe": "application/x-msdos-program",
  128. "ez": "application/andrew-inset",
  129. "fb": "application/x-maker",
  130. "fbdoc": "application/x-maker",
  131. "fch": "chemical/x-gaussian-checkpoint",
  132. "fchk": "chemical/x-gaussian-checkpoint",
  133. "fig": "application/x-xfig",
  134. "flac": "audio/flac",
  135. "fli": "video/fli",
  136. "flv": "video/x-flv",
  137. "fm": "application/x-maker",
  138. "frame": "application/x-maker",
  139. "frm": "application/x-maker",
  140. "gal": "chemical/x-gaussian-log",
  141. "gam": "chemical/x-gamess-input",
  142. "gamin": "chemical/x-gamess-input",
  143. "gan": "application/x-ganttproject",
  144. "gau": "chemical/x-gaussian-input",
  145. "gcd": "text/x-pcs-gcd",
  146. "gcf": "application/x-graphing-calculator",
  147. "gcg": "chemical/x-gcg8-sequence",
  148. "gen": "chemical/x-genbank",
  149. "gf": "application/x-tex-gf",
  150. "gif": "image/gif",
  151. "gjc": "chemical/x-gaussian-input",
  152. "gjf": "chemical/x-gaussian-input",
  153. "gl": "video/gl",
  154. "gnumeric": "application/x-gnumeric",
  155. "gpt": "chemical/x-mopac-graph",
  156. "gsf": "application/x-font",
  157. "gsm": "audio/x-gsm",
  158. "gtar": "application/x-gtar",
  159. "gz": "application/gzip",
  160. "h": "text/x-chdr",
  161. "h++": "text/x-c++hdr",
  162. "hdf": "application/x-hdf",
  163. "hh": "text/x-c++hdr",
  164. "hin": "chemical/x-hin",
  165. "hpp": "text/x-c++hdr",
  166. "hqx": "application/mac-binhex40",
  167. "hs": "text/x-haskell",
  168. "hta": "application/hta",
  169. "htc": "text/x-component",
  170. "htm": "text/html",
  171. "html": "text/html",
  172. "hwp": "application/x-hwp",
  173. "hxx": "text/x-c++hdr",
  174. "ica": "application/x-ica",
  175. "ice": "x-conference/x-cooltalk",
  176. "ico": "image/vnd.microsoft.icon",
  177. "ics": "text/calendar",
  178. "icz": "text/calendar",
  179. "ief": "image/ief",
  180. "iges": "model/iges",
  181. "igs": "model/iges",
  182. "iii": "application/x-iphone",
  183. "info": "application/x-info",
  184. "inp": "chemical/x-gamess-input",
  185. "ins": "application/x-internet-signup",
  186. "iso": "application/x-iso9660-image",
  187. "isp": "application/x-internet-signup",
  188. "ist": "chemical/x-isostar",
  189. "istr": "chemical/x-isostar",
  190. "jad": "text/vnd.sun.j2me.app-descriptor",
  191. "jam": "application/x-jam",
  192. "jar": "application/java-archive",
  193. "java": "text/x-java",
  194. "jdx": "chemical/x-jcamp-dx",
  195. "jmz": "application/x-jmol",
  196. "jng": "image/x-jng",
  197. "jnlp": "application/x-java-jnlp-file",
  198. "jp2": "image/jp2",
  199. "jpe": "image/jpeg",
  200. "jpeg": "image/jpeg",
  201. "jpf": "image/jpx",
  202. "jpg": "image/jpeg",
  203. "jpg2": "image/jp2",
  204. "jpm": "image/jpm",
  205. "jpx": "image/jpx",
  206. "js": "application/javascript",
  207. "json": "application/json",
  208. "kar": "audio/midi",
  209. "key": "application/pgp-keys",
  210. "kil": "application/x-killustrator",
  211. "kin": "chemical/x-kinemage",
  212. "kml": "application/vnd.google-earth.kml+xml",
  213. "kmz": "application/vnd.google-earth.kmz",
  214. "kpr": "application/x-kpresenter",
  215. "kpt": "application/x-kpresenter",
  216. "ksp": "application/x-kspread",
  217. "kwd": "application/x-kword",
  218. "kwt": "application/x-kword",
  219. "latex": "application/x-latex",
  220. "lha": "application/x-lha",
  221. "lhs": "text/x-literate-haskell",
  222. "lin": "application/bbolin",
  223. "lsf": "video/x-la-asf",
  224. "lsx": "video/x-la-asf",
  225. "ltx": "text/x-tex",
  226. "ly": "text/x-lilypond",
  227. "lyx": "application/x-lyx",
  228. "lzh": "application/x-lzh",
  229. "lzx": "application/x-lzx",
  230. "m3g": "application/m3g",
  231. "m3u": "audio/x-mpegurl",
  232. "m3u8": "application/x-mpegURL",
  233. "m4a": "audio/mpeg",
  234. "maker": "application/x-maker",
  235. "man": "application/x-troff-man",
  236. "mbox": "application/mbox",
  237. "mcif": "chemical/x-mmcif",
  238. "mcm": "chemical/x-macmolecule",
  239. "mdb": "application/msaccess",
  240. "me": "application/x-troff-me",
  241. "mesh": "model/mesh",
  242. "mid": "audio/midi",
  243. "midi": "audio/midi",
  244. "mif": "application/x-mif",
  245. "mkv": "video/x-matroska",
  246. "mm": "application/x-freemind",
  247. "mmd": "chemical/x-macromodel-input",
  248. "mmf": "application/vnd.smaf",
  249. "mml": "text/mathml",
  250. "mmod": "chemical/x-macromodel-input",
  251. "mng": "video/x-mng",
  252. "moc": "text/x-moc",
  253. "mol": "chemical/x-mdl-molfile",
  254. "mol2": "chemical/x-mol2",
  255. "moo": "chemical/x-mopac-out",
  256. "mop": "chemical/x-mopac-input",
  257. "mopcrt": "chemical/x-mopac-input",
  258. "mov": "video/quicktime",
  259. "movie": "video/x-sgi-movie",
  260. "mp2": "audio/mpeg",
  261. "mp3": "audio/mpeg",
  262. "mp4": "video/mp4",
  263. "mpc": "chemical/x-mopac-input",
  264. "mpe": "video/mpeg",
  265. "mpeg": "video/mpeg",
  266. "mpega": "audio/mpeg",
  267. "mpg": "video/mpeg",
  268. "mpga": "audio/mpeg",
  269. "mph": "application/x-comsol",
  270. "mpv": "video/x-matroska",
  271. "ms": "application/x-troff-ms",
  272. "msh": "model/mesh",
  273. "msi": "application/x-msi",
  274. "mvb": "chemical/x-mopac-vib",
  275. "mxf": "application/mxf",
  276. "mxu": "video/vnd.mpegurl",
  277. "nb": "application/mathematica",
  278. "nbp": "application/mathematica",
  279. "nc": "application/x-netcdf",
  280. "nef": "image/x-nikon-nef",
  281. "nwc": "application/x-nwc",
  282. "o": "application/x-object",
  283. "oda": "application/oda",
  284. "odb": "application/vnd.oasis.opendocument.database",
  285. "odc": "application/vnd.oasis.opendocument.chart",
  286. "odf": "application/vnd.oasis.opendocument.formula",
  287. "odg": "application/vnd.oasis.opendocument.graphics",
  288. "odi": "application/vnd.oasis.opendocument.image",
  289. "odm": "application/vnd.oasis.opendocument.text-master",
  290. "odp": "application/vnd.oasis.opendocument.presentation",
  291. "ods": "application/vnd.oasis.opendocument.spreadsheet",
  292. "odt": "application/vnd.oasis.opendocument.text",
  293. "oga": "audio/ogg",
  294. "ogg": "audio/ogg",
  295. "ogv": "video/ogg",
  296. "ogx": "application/ogg",
  297. "old": "application/x-trash",
  298. "one": "application/onenote",
  299. "onepkg": "application/onenote",
  300. "onetmp": "application/onenote",
  301. "onetoc2": "application/onenote",
  302. "opf": "application/oebps-package+xml",
  303. "opus": "audio/ogg",
  304. "orc": "audio/csound",
  305. "orf": "image/x-olympus-orf",
  306. "otf": "application/font-sfnt",
  307. "otg": "application/vnd.oasis.opendocument.graphics-template",
  308. "oth": "application/vnd.oasis.opendocument.text-web",
  309. "otp": "application/vnd.oasis.opendocument.presentation-template",
  310. "ots": "application/vnd.oasis.opendocument.spreadsheet-template",
  311. "ott": "application/vnd.oasis.opendocument.text-template",
  312. "oza": "application/x-oz-application",
  313. "p": "text/x-pascal",
  314. "p7r": "application/x-pkcs7-certreqresp",
  315. "pac": "application/x-ns-proxy-autoconfig",
  316. "pas": "text/x-pascal",
  317. "pat": "image/x-coreldrawpattern",
  318. "patch": "text/x-diff",
  319. "pbm": "image/x-portable-bitmap",
  320. "pcap": "application/vnd.tcpdump.pcap",
  321. "pcf": "application/x-font-pcf",
  322. "pcf.Z": "application/x-font-pcf",
  323. "pcx": "image/pcx",
  324. "pdb": "chemical/x-pdb",
  325. "pdf": "application/pdf",
  326. "pfa": "application/x-font",
  327. "pfb": "application/x-font",
  328. "pfr": "application/font-tdpfr",
  329. "pgm": "image/x-portable-graymap",
  330. "pgn": "application/x-chess-pgn",
  331. "pgp": "application/pgp-encrypted",
  332. "php": "#application/x-httpd-php",
  333. "php3": "#application/x-httpd-php3",
  334. "php3p": "#application/x-httpd-php3-preprocessed",
  335. "php4": "#application/x-httpd-php4",
  336. "php5": "#application/x-httpd-php5",
  337. "phps": "#application/x-httpd-php-source",
  338. "pht": "#application/x-httpd-php",
  339. "phtml": "#application/x-httpd-php",
  340. "pk": "application/x-tex-pk",
  341. "pl": "text/x-perl",
  342. "pls": "audio/x-scpls",
  343. "pm": "text/x-perl",
  344. "png": "image/png",
  345. "pnm": "image/x-portable-anymap",
  346. "pot": "text/plain",
  347. "potm": "application/vnd.ms-powerpoint.template.macroEnabled.12",
  348. "potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
  349. "ppam": "application/vnd.ms-powerpoint.addin.macroEnabled.12",
  350. "ppm": "image/x-portable-pixmap",
  351. "pps": "application/vnd.ms-powerpoint",
  352. "ppsm": "application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
  353. "ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
  354. "ppt": "application/vnd.ms-powerpoint",
  355. "pptm": "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
  356. "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
  357. "prf": "application/pics-rules",
  358. "prt": "chemical/x-ncbi-asn1-ascii",
  359. "ps": "application/postscript",
  360. "psd": "image/x-photoshop",
  361. "py": "text/x-python",
  362. "pyc": "application/x-python-code",
  363. "pyo": "application/x-python-code",
  364. "qgs": "application/x-qgis",
  365. "qt": "video/quicktime",
  366. "qtl": "application/x-quicktimeplayer",
  367. "ra": "audio/x-pn-realaudio",
  368. "ram": "audio/x-pn-realaudio",
  369. "rar": "application/rar",
  370. "ras": "image/x-cmu-raster",
  371. "rb": "application/x-ruby",
  372. "rd": "chemical/x-mdl-rdfile",
  373. "rdf": "application/rdf+xml",
  374. "rdp": "application/x-rdp",
  375. "rgb": "image/x-rgb",
  376. "rhtml": "#application/x-httpd-eruby",
  377. "rm": "audio/x-pn-realaudio",
  378. "roff": "application/x-troff",
  379. "ros": "chemical/x-rosdal",
  380. "rpm": "application/x-redhat-package-manager",
  381. "rss": "application/x-rss+xml",
  382. "rtf": "application/rtf",
  383. "rtx": "text/richtext",
  384. "rxn": "chemical/x-mdl-rxnfile",
  385. "scala": "text/x-scala",
  386. "sce": "application/x-scilab",
  387. "sci": "application/x-scilab",
  388. "sco": "audio/csound",
  389. "scr": "application/x-silverlight",
  390. "sct": "text/scriptlet",
  391. "sd": "chemical/x-mdl-sdfile",
  392. "sd2": "audio/x-sd2",
  393. "sda": "application/vnd.stardivision.draw",
  394. "sdc": "application/vnd.stardivision.calc",
  395. "sdd": "application/vnd.stardivision.impress",
  396. "sds": "application/vnd.stardivision.chart",
  397. "sdw": "application/vnd.stardivision.writer",
  398. "ser": "application/java-serialized-object",
  399. "sfd": "application/vnd.font-fontforge-sfd",
  400. "sfv": "text/x-sfv",
  401. "sgf": "application/x-go-sgf",
  402. "sgl": "application/vnd.stardivision.writer-global",
  403. "sh": "application/x-sh",
  404. "shar": "application/x-shar",
  405. "shp": "application/x-qgis",
  406. "shtml": "text/html",
  407. "shx": "application/x-qgis",
  408. "sid": "audio/prs.sid",
  409. "sig": "application/pgp-signature",
  410. "sik": "application/x-trash",
  411. "silo": "model/mesh",
  412. "sis": "application/vnd.symbian.install",
  413. "sisx": "x-epoc/x-sisx-app",
  414. "sit": "application/x-stuffit",
  415. "sitx": "application/x-stuffit",
  416. "skd": "application/x-koan",
  417. "skm": "application/x-koan",
  418. "skp": "application/x-koan",
  419. "skt": "application/x-koan",
  420. "sldm": "application/vnd.ms-powerpoint.slide.macroEnabled.12",
  421. "sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
  422. "smi": "application/smil+xml",
  423. "smil": "application/smil+xml",
  424. "snd": "audio/basic",
  425. "spc": "chemical/x-galactic-spc",
  426. "spl": "application/x-futuresplash",
  427. "spx": "audio/ogg",
  428. "sql": "application/x-sql",
  429. "src": "application/x-wais-source",
  430. "srt": "text/plain",
  431. "stc": "application/vnd.sun.xml.calc.template",
  432. "std": "application/vnd.sun.xml.draw.template",
  433. "sti": "application/vnd.sun.xml.impress.template",
  434. "stw": "application/vnd.sun.xml.writer.template",
  435. "sty": "text/x-tex",
  436. "sv4cpio": "application/x-sv4cpio",
  437. "sv4crc": "application/x-sv4crc",
  438. "svg": "image/svg+xml",
  439. "svgz": "image/svg+xml",
  440. "sw": "chemical/x-swissprot",
  441. "swf": "application/x-shockwave-flash",
  442. "swfl": "application/x-shockwave-flash",
  443. "sxc": "application/vnd.sun.xml.calc",
  444. "sxd": "application/vnd.sun.xml.draw",
  445. "sxg": "application/vnd.sun.xml.writer.global",
  446. "sxi": "application/vnd.sun.xml.impress",
  447. "sxm": "application/vnd.sun.xml.math",
  448. "sxw": "application/vnd.sun.xml.writer",
  449. "t": "application/x-troff",
  450. "tar": "application/x-tar",
  451. "taz": "application/x-gtar-compressed",
  452. "tcl": "application/x-tcl",
  453. "tex": "text/x-tex",
  454. "texi": "application/x-texinfo",
  455. "texinfo": "application/x-texinfo",
  456. "text": "text/plain",
  457. "tgf": "chemical/x-mdl-tgf",
  458. "tgz": "application/x-gtar-compressed",
  459. "thmx": "application/vnd.ms-officetheme",
  460. "tif": "image/tiff",
  461. "tiff": "image/tiff",
  462. "tk": "text/x-tcl",
  463. "tm": "text/texmacs",
  464. "torrent": "application/x-bittorrent",
  465. "tr": "application/x-troff",
  466. "ts": "video/MP2T",
  467. "tsp": "application/dsptype",
  468. "tsv": "text/tab-separated-values",
  469. "ttf": "application/font-sfnt",
  470. "ttl": "text/turtle",
  471. "txt": "text/plain",
  472. "uls": "text/iuls",
  473. "ustar": "application/x-ustar",
  474. "val": "chemical/x-ncbi-asn1-binary",
  475. "vcard": "text/vcard",
  476. "vcd": "application/x-cdlink",
  477. "vcf": "text/vcard",
  478. "vcs": "text/x-vcalendar",
  479. "vmd": "chemical/x-vmd",
  480. "vms": "chemical/x-vamas-iso14976",
  481. "vrm": "x-world/x-vrml",
  482. "vrml": "model/vrml",
  483. "vsd": "application/vnd.visio",
  484. "vss": "application/vnd.visio",
  485. "vst": "application/vnd.visio",
  486. "vsw": "application/vnd.visio",
  487. "wad": "application/x-doom",
  488. "wasm": "application/wasm",
  489. "wav": "audio/x-wav",
  490. "wax": "audio/x-ms-wax",
  491. "wbmp": "image/vnd.wap.wbmp",
  492. "wbxml": "application/vnd.wap.wbxml",
  493. "webm": "video/webm",
  494. "wk": "application/x-123",
  495. "wm": "video/x-ms-wm",
  496. "wma": "audio/x-ms-wma",
  497. "wmd": "application/x-ms-wmd",
  498. "wml": "text/vnd.wap.wml",
  499. "wmlc": "application/vnd.wap.wmlc",
  500. "wmls": "text/vnd.wap.wmlscript",
  501. "wmlsc": "application/vnd.wap.wmlscriptc",
  502. "wmv": "video/x-ms-wmv",
  503. "wmx": "video/x-ms-wmx",
  504. "wmz": "application/x-ms-wmz",
  505. "woff": "application/font-woff",
  506. "wp5": "application/vnd.wordperfect5.1",
  507. "wpd": "application/vnd.wordperfect",
  508. "wrl": "model/vrml",
  509. "wsc": "text/scriptlet",
  510. "wvx": "video/x-ms-wvx",
  511. "wz": "application/x-wingz",
  512. "x3d": "model/x3d+xml",
  513. "x3db": "model/x3d+binary",
  514. "x3dv": "model/x3d+vrml",
  515. "xbm": "image/x-xbitmap",
  516. "xcf": "application/x-xcf",
  517. "xcos": "application/x-scilab-xcos",
  518. "xht": "application/xhtml+xml",
  519. "xhtml": "application/xhtml+xml",
  520. "xlam": "application/vnd.ms-excel.addin.macroEnabled.12",
  521. "xlb": "application/vnd.ms-excel",
  522. "xls": "application/vnd.ms-excel",
  523. "xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
  524. "xlsm": "application/vnd.ms-excel.sheet.macroEnabled.12",
  525. "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  526. "xlt": "application/vnd.ms-excel",
  527. "xltm": "application/vnd.ms-excel.template.macroEnabled.12",
  528. "xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
  529. "xml": "application/xml",
  530. "xpi": "application/x-xpinstall",
  531. "xpm": "image/x-xpixmap",
  532. "xsd": "application/xml",
  533. "xsl": "application/xslt+xml",
  534. "xslt": "application/xslt+xml",
  535. "xspf": "application/xspf+xml",
  536. "xtel": "chemical/x-xtel",
  537. "xul": "application/vnd.mozilla.xul+xml",
  538. "xwd": "image/x-xwindowdump",
  539. "xyz": "chemical/x-xyz",
  540. "xz": "application/x-xz",
  541. "zip": "application/zip",
  542. }
  543. type ContentTypeRecognizer interface {
  544. ContentType(objectKey string) string
  545. }
  546. type ExtensionBasedContentTypeRecognizer struct{}
  547. func (er ExtensionBasedContentTypeRecognizer) ContentType(objectKey string) string {
  548. if len(objectKey) == 0 {
  549. return ""
  550. }
  551. extName := path.Ext(objectKey)
  552. if len(extName) > 0 && extName[0] == '.' {
  553. extName = extName[1:]
  554. }
  555. contentType, ok := mime[extName]
  556. if ok {
  557. return contentType
  558. }
  559. return "binary/octet-stream"
  560. }
  561. type EmptyContentTypeRecognizer struct{}
  562. func (er EmptyContentTypeRecognizer) ContentType(objectKey string) string {
  563. _ = objectKey
  564. return ""
  565. }