package tos import "path" var mime = map[string]string{ "3gp": "video/3gpp", "7z": "application/x-7z-compressed", "abw": "application/x-abiword", "ai": "application/postscript", "aif": "audio/x-aiff", "aifc": "audio/x-aiff", "aiff": "audio/x-aiff", "alc": "chemical/x-alchemy", "amr": "audio/amr", "anx": "application/annodex", "apk": "application/vnd.android.package-archive", "appcache": "text/cache-manifest", "art": "image/x-jg", "asc": "text/plain", "asf": "video/x-ms-asf", "aso": "chemical/x-ncbi-asn1-binary", "asx": "video/x-ms-asf", "atom": "application/atom+xml", "atomcat": "application/atomcat+xml", "atomsrv": "application/atomserv+xml", "au": "audio/basic", "avi": "video/x-msvideo", "awb": "audio/amr-wb", "axa": "audio/annodex", "axv": "video/annodex", "b": "chemical/x-molconn-Z", "bak": "application/x-trash", "bat": "application/x-msdos-program", "bcpio": "application/x-bcpio", "bib": "text/x-bibtex", "bin": "application/octet-stream", "bmp": "image/x-ms-bmp", "boo": "text/x-boo", "book": "application/x-maker", "brf": "text/plain", "bsd": "chemical/x-crossfire", "c": "text/x-csrc", "c++": "text/x-c++src", "c3d": "chemical/x-chem3d", "cab": "application/x-cab", "cac": "chemical/x-cache", "cache": "chemical/x-cache", "cap": "application/vnd.tcpdump.pcap", "cascii": "chemical/x-cactvs-binary", "cat": "application/vnd.ms-pki.seccat", "cbin": "chemical/x-cactvs-binary", "cbr": "application/x-cbr", "cbz": "application/x-cbz", "cc": "text/x-c++src", "cda": "application/x-cdf", "cdf": "application/x-cdf", "cdr": "image/x-coreldraw", "cdt": "image/x-coreldrawtemplate", "cdx": "chemical/x-cdx", "cdy": "application/vnd.cinderella", "cef": "chemical/x-cxf", "cer": "chemical/x-cerius", "chm": "chemical/x-chemdraw", "chrt": "application/x-kchart", "cif": "chemical/x-cif", "class": "application/java-vm", "cls": "text/x-tex", "cmdf": "chemical/x-cmdf", "cml": "chemical/x-cml", "cod": "application/vnd.rim.cod", "com": "application/x-msdos-program", "cpa": "chemical/x-compass", "cpio": "application/x-cpio", "cpp": "text/x-c++src", "cpt": "application/mac-compactpro", "cr2": "image/x-canon-cr2", "crl": "application/x-pkcs7-crl", "crt": "application/x-x509-ca-cert", "crw": "image/x-canon-crw", "csd": "audio/csound", "csf": "chemical/x-cache-csf", "csh": "application/x-csh", "csm": "chemical/x-csml", "csml": "chemical/x-csml", "css": "text/css", "csv": "text/csv", "ctab": "chemical/x-cactvs-binary", "ctx": "chemical/x-ctx", "cu": "application/cu-seeme", "cub": "chemical/x-gaussian-cube", "cxf": "chemical/x-cxf", "cxx": "text/x-c++src", "d": "text/x-dsrc", "davmount": "application/davmount+xml", "dcm": "application/dicom", "dcr": "application/x-director", "ddeb": "application/vnd.debian.binary-package", "dif": "video/dv", "diff": "text/x-diff", "dir": "application/x-director", "djv": "image/vnd.djvu", "djvu": "image/vnd.djvu", "dl": "video/dl", "dll": "application/x-msdos-program", "dmg": "application/x-apple-diskimage", "dms": "application/x-dms", "doc": "application/msword", "docm": "application/vnd.ms-word.document.macroEnabled.12", "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "dot": "application/msword", "dotm": "application/vnd.ms-word.template.macroEnabled.12", "dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template", "dv": "video/dv", "dvi": "application/x-dvi", "dx": "chemical/x-jcamp-dx", "dxr": "application/x-director", "emb": "chemical/x-embl-dl-nucleotide", "embl": "chemical/x-embl-dl-nucleotide", "eml": "message/rfc822", "eot": "application/vnd.ms-fontobject", "eps": "application/postscript", "eps2": "application/postscript", "eps3": "application/postscript", "epsf": "application/postscript", "epsi": "application/postscript", "erf": "image/x-epson-erf", "es": "application/ecmascript", "etx": "text/x-setext", "exe": "application/x-msdos-program", "ez": "application/andrew-inset", "fb": "application/x-maker", "fbdoc": "application/x-maker", "fch": "chemical/x-gaussian-checkpoint", "fchk": "chemical/x-gaussian-checkpoint", "fig": "application/x-xfig", "flac": "audio/flac", "fli": "video/fli", "flv": "video/x-flv", "fm": "application/x-maker", "frame": "application/x-maker", "frm": "application/x-maker", "gal": "chemical/x-gaussian-log", "gam": "chemical/x-gamess-input", "gamin": "chemical/x-gamess-input", "gan": "application/x-ganttproject", "gau": "chemical/x-gaussian-input", "gcd": "text/x-pcs-gcd", "gcf": "application/x-graphing-calculator", "gcg": "chemical/x-gcg8-sequence", "gen": "chemical/x-genbank", "gf": "application/x-tex-gf", "gif": "image/gif", "gjc": "chemical/x-gaussian-input", "gjf": "chemical/x-gaussian-input", "gl": "video/gl", "gnumeric": "application/x-gnumeric", "gpt": "chemical/x-mopac-graph", "gsf": "application/x-font", "gsm": "audio/x-gsm", "gtar": "application/x-gtar", "gz": "application/gzip", "h": "text/x-chdr", "h++": "text/x-c++hdr", "hdf": "application/x-hdf", "hh": "text/x-c++hdr", "hin": "chemical/x-hin", "hpp": "text/x-c++hdr", "hqx": "application/mac-binhex40", "hs": "text/x-haskell", "hta": "application/hta", "htc": "text/x-component", "htm": "text/html", "html": "text/html", "hwp": "application/x-hwp", "hxx": "text/x-c++hdr", "ica": "application/x-ica", "ice": "x-conference/x-cooltalk", "ico": "image/vnd.microsoft.icon", "ics": "text/calendar", "icz": "text/calendar", "ief": "image/ief", "iges": "model/iges", "igs": "model/iges", "iii": "application/x-iphone", "info": "application/x-info", "inp": "chemical/x-gamess-input", "ins": "application/x-internet-signup", "iso": "application/x-iso9660-image", "isp": "application/x-internet-signup", "ist": "chemical/x-isostar", "istr": "chemical/x-isostar", "jad": "text/vnd.sun.j2me.app-descriptor", "jam": "application/x-jam", "jar": "application/java-archive", "java": "text/x-java", "jdx": "chemical/x-jcamp-dx", "jmz": "application/x-jmol", "jng": "image/x-jng", "jnlp": "application/x-java-jnlp-file", "jp2": "image/jp2", "jpe": "image/jpeg", "jpeg": "image/jpeg", "jpf": "image/jpx", "jpg": "image/jpeg", "jpg2": "image/jp2", "jpm": "image/jpm", "jpx": "image/jpx", "js": "application/javascript", "json": "application/json", "kar": "audio/midi", "key": "application/pgp-keys", "kil": "application/x-killustrator", "kin": "chemical/x-kinemage", "kml": "application/vnd.google-earth.kml+xml", "kmz": "application/vnd.google-earth.kmz", "kpr": "application/x-kpresenter", "kpt": "application/x-kpresenter", "ksp": "application/x-kspread", "kwd": "application/x-kword", "kwt": "application/x-kword", "latex": "application/x-latex", "lha": "application/x-lha", "lhs": "text/x-literate-haskell", "lin": "application/bbolin", "lsf": "video/x-la-asf", "lsx": "video/x-la-asf", "ltx": "text/x-tex", "ly": "text/x-lilypond", "lyx": "application/x-lyx", "lzh": "application/x-lzh", "lzx": "application/x-lzx", "m3g": "application/m3g", "m3u": "audio/x-mpegurl", "m3u8": "application/x-mpegURL", "m4a": "audio/mpeg", "maker": "application/x-maker", "man": "application/x-troff-man", "mbox": "application/mbox", "mcif": "chemical/x-mmcif", "mcm": "chemical/x-macmolecule", "mdb": "application/msaccess", "me": "application/x-troff-me", "mesh": "model/mesh", "mid": "audio/midi", "midi": "audio/midi", "mif": "application/x-mif", "mkv": "video/x-matroska", "mm": "application/x-freemind", "mmd": "chemical/x-macromodel-input", "mmf": "application/vnd.smaf", "mml": "text/mathml", "mmod": "chemical/x-macromodel-input", "mng": "video/x-mng", "moc": "text/x-moc", "mol": "chemical/x-mdl-molfile", "mol2": "chemical/x-mol2", "moo": "chemical/x-mopac-out", "mop": "chemical/x-mopac-input", "mopcrt": "chemical/x-mopac-input", "mov": "video/quicktime", "movie": "video/x-sgi-movie", "mp2": "audio/mpeg", "mp3": "audio/mpeg", "mp4": "video/mp4", "mpc": "chemical/x-mopac-input", "mpe": "video/mpeg", "mpeg": "video/mpeg", "mpega": "audio/mpeg", "mpg": "video/mpeg", "mpga": "audio/mpeg", "mph": "application/x-comsol", "mpv": "video/x-matroska", "ms": "application/x-troff-ms", "msh": "model/mesh", "msi": "application/x-msi", "mvb": "chemical/x-mopac-vib", "mxf": "application/mxf", "mxu": "video/vnd.mpegurl", "nb": "application/mathematica", "nbp": "application/mathematica", "nc": "application/x-netcdf", "nef": "image/x-nikon-nef", "nwc": "application/x-nwc", "o": "application/x-object", "oda": "application/oda", "odb": "application/vnd.oasis.opendocument.database", "odc": "application/vnd.oasis.opendocument.chart", "odf": "application/vnd.oasis.opendocument.formula", "odg": "application/vnd.oasis.opendocument.graphics", "odi": "application/vnd.oasis.opendocument.image", "odm": "application/vnd.oasis.opendocument.text-master", "odp": "application/vnd.oasis.opendocument.presentation", "ods": "application/vnd.oasis.opendocument.spreadsheet", "odt": "application/vnd.oasis.opendocument.text", "oga": "audio/ogg", "ogg": "audio/ogg", "ogv": "video/ogg", "ogx": "application/ogg", "old": "application/x-trash", "one": "application/onenote", "onepkg": "application/onenote", "onetmp": "application/onenote", "onetoc2": "application/onenote", "opf": "application/oebps-package+xml", "opus": "audio/ogg", "orc": "audio/csound", "orf": "image/x-olympus-orf", "otf": "application/font-sfnt", "otg": "application/vnd.oasis.opendocument.graphics-template", "oth": "application/vnd.oasis.opendocument.text-web", "otp": "application/vnd.oasis.opendocument.presentation-template", "ots": "application/vnd.oasis.opendocument.spreadsheet-template", "ott": "application/vnd.oasis.opendocument.text-template", "oza": "application/x-oz-application", "p": "text/x-pascal", "p7r": "application/x-pkcs7-certreqresp", "pac": "application/x-ns-proxy-autoconfig", "pas": "text/x-pascal", "pat": "image/x-coreldrawpattern", "patch": "text/x-diff", "pbm": "image/x-portable-bitmap", "pcap": "application/vnd.tcpdump.pcap", "pcf": "application/x-font-pcf", "pcf.Z": "application/x-font-pcf", "pcx": "image/pcx", "pdb": "chemical/x-pdb", "pdf": "application/pdf", "pfa": "application/x-font", "pfb": "application/x-font", "pfr": "application/font-tdpfr", "pgm": "image/x-portable-graymap", "pgn": "application/x-chess-pgn", "pgp": "application/pgp-encrypted", "php": "#application/x-httpd-php", "php3": "#application/x-httpd-php3", "php3p": "#application/x-httpd-php3-preprocessed", "php4": "#application/x-httpd-php4", "php5": "#application/x-httpd-php5", "phps": "#application/x-httpd-php-source", "pht": "#application/x-httpd-php", "phtml": "#application/x-httpd-php", "pk": "application/x-tex-pk", "pl": "text/x-perl", "pls": "audio/x-scpls", "pm": "text/x-perl", "png": "image/png", "pnm": "image/x-portable-anymap", "pot": "text/plain", "potm": "application/vnd.ms-powerpoint.template.macroEnabled.12", "potx": "application/vnd.openxmlformats-officedocument.presentationml.template", "ppam": "application/vnd.ms-powerpoint.addin.macroEnabled.12", "ppm": "image/x-portable-pixmap", "pps": "application/vnd.ms-powerpoint", "ppsm": "application/vnd.ms-powerpoint.slideshow.macroEnabled.12", "ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow", "ppt": "application/vnd.ms-powerpoint", "pptm": "application/vnd.ms-powerpoint.presentation.macroEnabled.12", "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "prf": "application/pics-rules", "prt": "chemical/x-ncbi-asn1-ascii", "ps": "application/postscript", "psd": "image/x-photoshop", "py": "text/x-python", "pyc": "application/x-python-code", "pyo": "application/x-python-code", "qgs": "application/x-qgis", "qt": "video/quicktime", "qtl": "application/x-quicktimeplayer", "ra": "audio/x-pn-realaudio", "ram": "audio/x-pn-realaudio", "rar": "application/rar", "ras": "image/x-cmu-raster", "rb": "application/x-ruby", "rd": "chemical/x-mdl-rdfile", "rdf": "application/rdf+xml", "rdp": "application/x-rdp", "rgb": "image/x-rgb", "rhtml": "#application/x-httpd-eruby", "rm": "audio/x-pn-realaudio", "roff": "application/x-troff", "ros": "chemical/x-rosdal", "rpm": "application/x-redhat-package-manager", "rss": "application/x-rss+xml", "rtf": "application/rtf", "rtx": "text/richtext", "rxn": "chemical/x-mdl-rxnfile", "scala": "text/x-scala", "sce": "application/x-scilab", "sci": "application/x-scilab", "sco": "audio/csound", "scr": "application/x-silverlight", "sct": "text/scriptlet", "sd": "chemical/x-mdl-sdfile", "sd2": "audio/x-sd2", "sda": "application/vnd.stardivision.draw", "sdc": "application/vnd.stardivision.calc", "sdd": "application/vnd.stardivision.impress", "sds": "application/vnd.stardivision.chart", "sdw": "application/vnd.stardivision.writer", "ser": "application/java-serialized-object", "sfd": "application/vnd.font-fontforge-sfd", "sfv": "text/x-sfv", "sgf": "application/x-go-sgf", "sgl": "application/vnd.stardivision.writer-global", "sh": "application/x-sh", "shar": "application/x-shar", "shp": "application/x-qgis", "shtml": "text/html", "shx": "application/x-qgis", "sid": "audio/prs.sid", "sig": "application/pgp-signature", "sik": "application/x-trash", "silo": "model/mesh", "sis": "application/vnd.symbian.install", "sisx": "x-epoc/x-sisx-app", "sit": "application/x-stuffit", "sitx": "application/x-stuffit", "skd": "application/x-koan", "skm": "application/x-koan", "skp": "application/x-koan", "skt": "application/x-koan", "sldm": "application/vnd.ms-powerpoint.slide.macroEnabled.12", "sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide", "smi": "application/smil+xml", "smil": "application/smil+xml", "snd": "audio/basic", "spc": "chemical/x-galactic-spc", "spl": "application/x-futuresplash", "spx": "audio/ogg", "sql": "application/x-sql", "src": "application/x-wais-source", "srt": "text/plain", "stc": "application/vnd.sun.xml.calc.template", "std": "application/vnd.sun.xml.draw.template", "sti": "application/vnd.sun.xml.impress.template", "stw": "application/vnd.sun.xml.writer.template", "sty": "text/x-tex", "sv4cpio": "application/x-sv4cpio", "sv4crc": "application/x-sv4crc", "svg": "image/svg+xml", "svgz": "image/svg+xml", "sw": "chemical/x-swissprot", "swf": "application/x-shockwave-flash", "swfl": "application/x-shockwave-flash", "sxc": "application/vnd.sun.xml.calc", "sxd": "application/vnd.sun.xml.draw", "sxg": "application/vnd.sun.xml.writer.global", "sxi": "application/vnd.sun.xml.impress", "sxm": "application/vnd.sun.xml.math", "sxw": "application/vnd.sun.xml.writer", "t": "application/x-troff", "tar": "application/x-tar", "taz": "application/x-gtar-compressed", "tcl": "application/x-tcl", "tex": "text/x-tex", "texi": "application/x-texinfo", "texinfo": "application/x-texinfo", "text": "text/plain", "tgf": "chemical/x-mdl-tgf", "tgz": "application/x-gtar-compressed", "thmx": "application/vnd.ms-officetheme", "tif": "image/tiff", "tiff": "image/tiff", "tk": "text/x-tcl", "tm": "text/texmacs", "torrent": "application/x-bittorrent", "tr": "application/x-troff", "ts": "video/MP2T", "tsp": "application/dsptype", "tsv": "text/tab-separated-values", "ttf": "application/font-sfnt", "ttl": "text/turtle", "txt": "text/plain", "uls": "text/iuls", "ustar": "application/x-ustar", "val": "chemical/x-ncbi-asn1-binary", "vcard": "text/vcard", "vcd": "application/x-cdlink", "vcf": "text/vcard", "vcs": "text/x-vcalendar", "vmd": "chemical/x-vmd", "vms": "chemical/x-vamas-iso14976", "vrm": "x-world/x-vrml", "vrml": "model/vrml", "vsd": "application/vnd.visio", "vss": "application/vnd.visio", "vst": "application/vnd.visio", "vsw": "application/vnd.visio", "wad": "application/x-doom", "wasm": "application/wasm", "wav": "audio/x-wav", "wax": "audio/x-ms-wax", "wbmp": "image/vnd.wap.wbmp", "wbxml": "application/vnd.wap.wbxml", "webm": "video/webm", "wk": "application/x-123", "wm": "video/x-ms-wm", "wma": "audio/x-ms-wma", "wmd": "application/x-ms-wmd", "wml": "text/vnd.wap.wml", "wmlc": "application/vnd.wap.wmlc", "wmls": "text/vnd.wap.wmlscript", "wmlsc": "application/vnd.wap.wmlscriptc", "wmv": "video/x-ms-wmv", "wmx": "video/x-ms-wmx", "wmz": "application/x-ms-wmz", "woff": "application/font-woff", "wp5": "application/vnd.wordperfect5.1", "wpd": "application/vnd.wordperfect", "wrl": "model/vrml", "wsc": "text/scriptlet", "wvx": "video/x-ms-wvx", "wz": "application/x-wingz", "x3d": "model/x3d+xml", "x3db": "model/x3d+binary", "x3dv": "model/x3d+vrml", "xbm": "image/x-xbitmap", "xcf": "application/x-xcf", "xcos": "application/x-scilab-xcos", "xht": "application/xhtml+xml", "xhtml": "application/xhtml+xml", "xlam": "application/vnd.ms-excel.addin.macroEnabled.12", "xlb": "application/vnd.ms-excel", "xls": "application/vnd.ms-excel", "xlsb": "application/vnd.ms-excel.sheet.binary.macroEnabled.12", "xlsm": "application/vnd.ms-excel.sheet.macroEnabled.12", "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlt": "application/vnd.ms-excel", "xltm": "application/vnd.ms-excel.template.macroEnabled.12", "xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template", "xml": "application/xml", "xpi": "application/x-xpinstall", "xpm": "image/x-xpixmap", "xsd": "application/xml", "xsl": "application/xslt+xml", "xslt": "application/xslt+xml", "xspf": "application/xspf+xml", "xtel": "chemical/x-xtel", "xul": "application/vnd.mozilla.xul+xml", "xwd": "image/x-xwindowdump", "xyz": "chemical/x-xyz", "xz": "application/x-xz", "zip": "application/zip", } type ContentTypeRecognizer interface { ContentType(objectKey string) string } type ExtensionBasedContentTypeRecognizer struct{} func (er ExtensionBasedContentTypeRecognizer) ContentType(objectKey string) string { if len(objectKey) == 0 { return "" } extName := path.Ext(objectKey) if len(extName) > 0 && extName[0] == '.' { extName = extName[1:] } contentType, ok := mime[extName] if ok { return contentType } return "binary/octet-stream" } type EmptyContentTypeRecognizer struct{} func (er EmptyContentTypeRecognizer) ContentType(objectKey string) string { _ = objectKey return "" }