Packages

MIME type lookup: translate a file extension to MIME type or vice versa

Current section

Files

Jump to
minmay src minmay.erl
Raw

src/minmay.erl

-module(minmay).
-export([start/0, stop/0]).
-export([get_extension/1]).
-export([get_mime_type/1]).
-export([extensions/0]).
-export([mime_types/0]).
-type extension() :: binary().
-type mime_type() :: binary().
-spec start() -> ok.
start() ->
{ok, _Started} = application:ensure_all_started(minmay),
ok = populate_ets(extensions),
ok = populate_ets(mime_types).
-spec stop() -> ok.
stop() ->
true = ets:delete(extensions),
true = ets:delete(mime_types),
ok.
-spec get_mime_type(flie:filename() | extension()) -> mime_type().
get_mime_type(FileName) ->
FileExtension = filename:extension(FileName),
[{FileExtension, MimeType}] = ets:lookup(extensions, FileExtension),
MimeType.
-spec get_extension(mime_type()) -> extension().
get_extension(MimeType) ->
[{MimeType, FileExtension}] = ets:lookup(mime_types, MimeType),
FileExtension.
populate_ets(EtsTableName) ->
EtsTableName = ets:new(EtsTableName, [set, named_table, protected]),
true = ets:insert(EtsTableName, minmay:EtsTableName()),
ok.
-spec extensions() -> [{extension(), mime_type()}].
extensions() ->
[
{<<".323">>, <<"text/h323">>},
{<<".3g2">>, <<"video/3gpp2">>},
{<<".3gp">>, <<"video/3gpp">>},
{<<".3gp2">>, <<"video/3gpp2">>},
{<<".3gpp">>, <<"video/3gpp">>},
{<<".7z">>, <<"application/x-7z-compressed">>},
{<<".aa">>, <<"audio/audible">>},
{<<".AAC">>, <<"audio/aac">>},
{<<".aaf">>, <<"application/octet-stream">>},
{<<".aax">>, <<"audio/vnd.audible.aax">>},
{<<".ac3">>, <<"audio/ac3">>},
{<<".aca">>, <<"application/octet-stream">>},
{<<".accda">>, <<"application/msaccess.addin">>},
{<<".accdb">>, <<"application/msaccess">>},
{<<".accdc">>, <<"application/msaccess.cab">>},
{<<".accde">>, <<"application/msaccess">>},
{<<".accdr">>, <<"application/msaccess.runtime">>},
{<<".accdt">>, <<"application/msaccess">>},
{<<".accdw">>, <<"application/msaccess.webapplication">>},
{<<".accft">>, <<"application/msaccess.ftemplate">>},
{<<".acx">>, <<"application/internet-property-stream">>},
{<<".AddIn">>, <<"text/xml">>},
{<<".ade">>, <<"application/msaccess">>},
{<<".adobebridge">>, <<"application/x-bridge-url">>},
{<<".adp">>, <<"application/msaccess">>},
{<<".ADT">>, <<"audio/vnd.dlna.adts">>},
{<<".ADTS">>, <<"audio/aac">>},
{<<".afm">>, <<"application/octet-stream">>},
{<<".ai">>, <<"application/postscript">>},
{<<".aif">>, <<"audio/aiff">>},
{<<".aifc">>, <<"audio/aiff">>},
{<<".aiff">>, <<"audio/aiff">>},
{<<".air">>, <<"application/vnd.adobe.air-application-installer-package+zip">>},
{<<".amc">>, <<"application/mpeg">>},
{<<".anx">>, <<"application/annodex">>},
{<<".apk">>, <<"application/vnd.android.package-archive">>},
{<<".application">>, <<"application/x-ms-application">>},
{<<".art">>, <<"image/x-jg">>},
{<<".asa">>, <<"application/xml">>},
{<<".asax">>, <<"application/xml">>},
{<<".ascx">>, <<"application/xml">>},
{<<".asd">>, <<"application/octet-stream">>},
{<<".asf">>, <<"video/x-ms-asf">>},
{<<".ashx">>, <<"application/xml">>},
{<<".asi">>, <<"application/octet-stream">>},
{<<".asm">>, <<"text/plain">>},
{<<".asmx">>, <<"application/xml">>},
{<<".aspx">>, <<"application/xml">>},
{<<".asr">>, <<"video/x-ms-asf">>},
{<<".asx">>, <<"video/x-ms-asf">>},
{<<".atom">>, <<"application/atom+xml">>},
{<<".au">>, <<"audio/basic">>},
{<<".avi">>, <<"video/x-msvideo">>},
{<<".axa">>, <<"audio/annodex">>},
{<<".axs">>, <<"application/olescript">>},
{<<".axv">>, <<"video/annodex">>},
{<<".bas">>, <<"text/plain">>},
{<<".bcpio">>, <<"application/x-bcpio">>},
{<<".bin">>, <<"application/octet-stream">>},
{<<".bmp">>, <<"image/bmp">>},
{<<".c">>, <<"text/plain">>},
{<<".cab">>, <<"application/octet-stream">>},
{<<".caf">>, <<"audio/x-caf">>},
{<<".calx">>, <<"application/vnd.ms-office.calx">>},
{<<".cat">>, <<"application/vnd.ms-pki.seccat">>},
{<<".cc">>, <<"text/plain">>},
{<<".cd">>, <<"text/plain">>},
{<<".cdda">>, <<"audio/aiff">>},
{<<".cdf">>, <<"application/x-cdf">>},
{<<".cer">>, <<"application/x-x509-ca-cert">>},
{<<".cfg">>, <<"text/plain">>},
{<<".chm">>, <<"application/octet-stream">>},
{<<".class">>, <<"application/x-java-applet">>},
{<<".clp">>, <<"application/x-msclip">>},
{<<".cmd">>, <<"text/plain">>},
{<<".cmx">>, <<"image/x-cmx">>},
{<<".cnf">>, <<"text/plain">>},
{<<".cod">>, <<"image/cis-cod">>},
%% {<<".config">>, <<"application/xml">>},
{<<".contact">>, <<"text/x-ms-contact">>},
{<<".coverage">>, <<"application/xml">>},
{<<".cpio">>, <<"application/x-cpio">>},
{<<".cpp">>, <<"text/plain">>},
{<<".crd">>, <<"application/x-mscardfile">>},
{<<".crl">>, <<"application/pkix-crl">>},
{<<".crt">>, <<"application/x-x509-ca-cert">>},
{<<".cs">>, <<"text/plain">>},
{<<".csdproj">>, <<"text/plain">>},
{<<".csh">>, <<"application/x-csh">>},
{<<".csproj">>, <<"text/plain">>},
{<<".css">>, <<"text/css">>},
{<<".csv">>, <<"text/csv">>},
{<<".cur">>, <<"application/octet-stream">>},
{<<".cxx">>, <<"text/plain">>},
{<<".dat">>, <<"application/octet-stream">>},
{<<".datasource">>, <<"application/xml">>},
{<<".dbproj">>, <<"text/plain">>},
{<<".dcr">>, <<"application/x-director">>},
{<<".def">>, <<"text/plain">>},
{<<".deploy">>, <<"application/octet-stream">>},
{<<".der">>, <<"application/x-x509-ca-cert">>},
{<<".dgml">>, <<"application/xml">>},
{<<".dib">>, <<"image/bmp">>},
{<<".dif">>, <<"video/x-dv">>},
{<<".dir">>, <<"application/x-director">>},
{<<".disco">>, <<"text/xml">>},
{<<".divx">>, <<"video/divx">>},
{<<".dll">>, <<"application/x-msdownload">>},
%% {<<".dll.config">>, <<"text/xml">>},
{<<".dlm">>, <<"text/dlm">>},
{<<".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">>},
{<<".dsp">>, <<"application/octet-stream">>},
{<<".dsw">>, <<"text/plain">>},
{<<".dtd">>, <<"text/xml">>},
%% {<<".dtsConfig">>, <<"text/xml">>},
{<<".dv">>, <<"video/x-dv">>},
{<<".dvi">>, <<"application/x-dvi">>},
{<<".dwf">>, <<"drawing/x-dwf">>},
{<<".dwp">>, <<"application/octet-stream">>},
{<<".dxr">>, <<"application/x-director">>},
{<<".eml">>, <<"message/rfc822">>},
{<<".emz">>, <<"application/octet-stream">>},
{<<".eot">>, <<"application/vnd.ms-fontobject">>},
{<<".eps">>, <<"application/postscript">>},
{<<".etl">>, <<"application/etl">>},
{<<".etx">>, <<"text/x-setext">>},
{<<".evy">>, <<"application/envoy">>},
{<<".exe">>, <<"application/octet-stream">>},
%% {<<".exe.config">>, <<"text/xml">>},
{<<".fdf">>, <<"application/vnd.fdf">>},
{<<".fif">>, <<"application/fractals">>},
{<<".filters">>, <<"application/xml">>},
{<<".fla">>, <<"application/octet-stream">>},
{<<".flac">>, <<"audio/flac">>},
{<<".flr">>, <<"x-world/x-vrml">>},
{<<".flv">>, <<"video/x-flv">>},
{<<".fsscript">>, <<"application/fsharp-script">>},
{<<".fsx">>, <<"application/fsharp-script">>},
{<<".generictest">>, <<"application/xml">>},
{<<".gif">>, <<"image/gif">>},
{<<".group">>, <<"text/x-ms-group">>},
{<<".gsm">>, <<"audio/x-gsm">>},
{<<".gtar">>, <<"application/x-gtar">>},
{<<".gz">>, <<"application/x-gzip">>},
{<<".h">>, <<"text/plain">>},
{<<".hdf">>, <<"application/x-hdf">>},
{<<".hdml">>, <<"text/x-hdml">>},
{<<".hhc">>, <<"application/x-oleobject">>},
{<<".hhk">>, <<"application/octet-stream">>},
{<<".hhp">>, <<"application/octet-stream">>},
{<<".hlp">>, <<"application/winhlp">>},
{<<".hpp">>, <<"text/plain">>},
{<<".hqx">>, <<"application/mac-binhex40">>},
{<<".hta">>, <<"application/hta">>},
{<<".htc">>, <<"text/x-component">>},
{<<".htm">>, <<"text/html">>},
{<<".html">>, <<"text/html">>},
{<<".htt">>, <<"text/webviewhtml">>},
{<<".hxa">>, <<"application/xml">>},
{<<".hxc">>, <<"application/xml">>},
{<<".hxd">>, <<"application/octet-stream">>},
{<<".hxe">>, <<"application/xml">>},
{<<".hxf">>, <<"application/xml">>},
{<<".hxh">>, <<"application/octet-stream">>},
{<<".hxi">>, <<"application/octet-stream">>},
{<<".hxk">>, <<"application/xml">>},
{<<".hxq">>, <<"application/octet-stream">>},
{<<".hxr">>, <<"application/octet-stream">>},
{<<".hxs">>, <<"application/octet-stream">>},
{<<".hxt">>, <<"text/html">>},
{<<".hxv">>, <<"application/xml">>},
{<<".hxw">>, <<"application/octet-stream">>},
{<<".hxx">>, <<"text/plain">>},
{<<".i">>, <<"text/plain">>},
{<<".ico">>, <<"image/x-icon">>},
{<<".ics">>, <<"application/octet-stream">>},
{<<".idl">>, <<"text/plain">>},
{<<".ief">>, <<"image/ief">>},
{<<".iii">>, <<"application/x-iphone">>},
{<<".inc">>, <<"text/plain">>},
{<<".inf">>, <<"application/octet-stream">>},
{<<".ini">>, <<"text/plain">>},
{<<".inl">>, <<"text/plain">>},
{<<".ins">>, <<"application/x-internet-signup">>},
{<<".ipa">>, <<"application/x-itunes-ipa">>},
{<<".ipg">>, <<"application/x-itunes-ipg">>},
{<<".ipproj">>, <<"text/plain">>},
{<<".ipsw">>, <<"application/x-itunes-ipsw">>},
{<<".iqy">>, <<"text/x-ms-iqy">>},
{<<".isp">>, <<"application/x-internet-signup">>},
{<<".ite">>, <<"application/x-itunes-ite">>},
{<<".itlp">>, <<"application/x-itunes-itlp">>},
{<<".itms">>, <<"application/x-itunes-itms">>},
{<<".itpc">>, <<"application/x-itunes-itpc">>},
{<<".IVF">>, <<"video/x-ivf">>},
{<<".jar">>, <<"application/java-archive">>},
{<<".java">>, <<"application/octet-stream">>},
{<<".jck">>, <<"application/liquidmotion">>},
{<<".jcz">>, <<"application/liquidmotion">>},
{<<".jfif">>, <<"image/pjpeg">>},
{<<".jnlp">>, <<"application/x-java-jnlp-file">>},
{<<".jpb">>, <<"application/octet-stream">>},
{<<".jpe">>, <<"image/jpeg">>},
{<<".jpeg">>, <<"image/jpeg">>},
{<<".jpg">>, <<"image/jpeg">>},
{<<".js">>, <<"application/javascript">>},
{<<".json">>, <<"application/json">>},
{<<".jsx">>, <<"text/jscript">>},
{<<".jsxbin">>, <<"text/plain">>},
{<<".latex">>, <<"application/x-latex">>},
{<<".library-ms">>, <<"application/windows-library+xml">>},
{<<".lit">>, <<"application/x-ms-reader">>},
{<<".loadtest">>, <<"application/xml">>},
{<<".lpk">>, <<"application/octet-stream">>},
{<<".lsf">>, <<"video/x-la-asf">>},
{<<".lst">>, <<"text/plain">>},
{<<".lsx">>, <<"video/x-la-asf">>},
{<<".lzh">>, <<"application/octet-stream">>},
{<<".m13">>, <<"application/x-msmediaview">>},
{<<".m14">>, <<"application/x-msmediaview">>},
{<<".m1v">>, <<"video/mpeg">>},
{<<".m2t">>, <<"video/vnd.dlna.mpeg-tts">>},
{<<".m2ts">>, <<"video/vnd.dlna.mpeg-tts">>},
{<<".m2v">>, <<"video/mpeg">>},
{<<".m3u">>, <<"audio/x-mpegurl">>},
{<<".m3u8">>, <<"audio/x-mpegurl">>},
{<<".m4a">>, <<"audio/m4a">>},
{<<".m4b">>, <<"audio/m4b">>},
{<<".m4p">>, <<"audio/m4p">>},
{<<".m4r">>, <<"audio/x-m4r">>},
{<<".m4v">>, <<"video/x-m4v">>},
{<<".mac">>, <<"image/x-macpaint">>},
{<<".mak">>, <<"text/plain">>},
{<<".man">>, <<"application/x-troff-man">>},
{<<".manifest">>, <<"application/x-ms-manifest">>},
{<<".map">>, <<"text/plain">>},
{<<".master">>, <<"application/xml">>},
{<<".mda">>, <<"application/msaccess">>},
{<<".mdb">>, <<"application/x-msaccess">>},
{<<".mde">>, <<"application/msaccess">>},
{<<".mdp">>, <<"application/octet-stream">>},
{<<".me">>, <<"application/x-troff-me">>},
{<<".mfp">>, <<"application/x-shockwave-flash">>},
{<<".mht">>, <<"message/rfc822">>},
{<<".mhtml">>, <<"message/rfc822">>},
{<<".mid">>, <<"audio/mid">>},
{<<".midi">>, <<"audio/mid">>},
{<<".mix">>, <<"application/octet-stream">>},
{<<".mk">>, <<"text/plain">>},
{<<".mmf">>, <<"application/x-smaf">>},
{<<".mno">>, <<"text/xml">>},
{<<".mny">>, <<"application/x-msmoney">>},
{<<".mod">>, <<"video/mpeg">>},
{<<".mov">>, <<"video/quicktime">>},
{<<".movie">>, <<"video/x-sgi-movie">>},
{<<".mp2">>, <<"video/mpeg">>},
{<<".mp2v">>, <<"video/mpeg">>},
{<<".mp3">>, <<"audio/mpeg">>},
{<<".mp4">>, <<"video/mp4">>},
{<<".mp4v">>, <<"video/mp4">>},
{<<".mpa">>, <<"video/mpeg">>},
{<<".mpe">>, <<"video/mpeg">>},
{<<".mpeg">>, <<"video/mpeg">>},
{<<".mpf">>, <<"application/vnd.ms-mediapackage">>},
{<<".mpg">>, <<"video/mpeg">>},
{<<".mpp">>, <<"application/vnd.ms-project">>},
{<<".mpv2">>, <<"video/mpeg">>},
{<<".mqv">>, <<"video/quicktime">>},
{<<".ms">>, <<"application/x-troff-ms">>},
{<<".msi">>, <<"application/octet-stream">>},
{<<".mso">>, <<"application/octet-stream">>},
{<<".mts">>, <<"video/vnd.dlna.mpeg-tts">>},
{<<".mtx">>, <<"application/xml">>},
{<<".mvb">>, <<"application/x-msmediaview">>},
{<<".mvc">>, <<"application/x-miva-compiled">>},
{<<".mxp">>, <<"application/x-mmxp">>},
{<<".nc">>, <<"application/x-netcdf">>},
{<<".nsc">>, <<"video/x-ms-asf">>},
{<<".nws">>, <<"message/rfc822">>},
{<<".ocx">>, <<"application/octet-stream">>},
{<<".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">>},
{<<".odh">>, <<"text/plain">>},
{<<".odi">>, <<"application/vnd.oasis.opendocument.image">>},
{<<".odl">>, <<"text/plain">>},
{<<".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">>},
{<<".one">>, <<"application/onenote">>},
{<<".onea">>, <<"application/onenote">>},
{<<".onepkg">>, <<"application/onenote">>},
{<<".onetmp">>, <<"application/onenote">>},
{<<".onetoc">>, <<"application/onenote">>},
{<<".onetoc2">>, <<"application/onenote">>},
{<<".opus">>, <<"audio/ogg">>},
{<<".orderedtest">>, <<"application/xml">>},
{<<".osdx">>, <<"application/opensearchdescription+xml">>},
{<<".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">>},
{<<".oxt">>, <<"application/vnd.openofficeorg.extension">>},
{<<".p10">>, <<"application/pkcs10">>},
{<<".p12">>, <<"application/x-pkcs12">>},
{<<".p7b">>, <<"application/x-pkcs7-certificates">>},
{<<".p7c">>, <<"application/pkcs7-mime">>},
{<<".p7m">>, <<"application/pkcs7-mime">>},
{<<".p7r">>, <<"application/x-pkcs7-certreqresp">>},
{<<".p7s">>, <<"application/pkcs7-signature">>},
{<<".pbm">>, <<"image/x-portable-bitmap">>},
{<<".pcast">>, <<"application/x-podcast">>},
{<<".pct">>, <<"image/pict">>},
{<<".pcx">>, <<"application/octet-stream">>},
{<<".pcz">>, <<"application/octet-stream">>},
{<<".pdf">>, <<"application/pdf">>},
{<<".pfb">>, <<"application/octet-stream">>},
{<<".pfm">>, <<"application/octet-stream">>},
{<<".pfx">>, <<"application/x-pkcs12">>},
{<<".pgm">>, <<"image/x-portable-graymap">>},
{<<".pic">>, <<"image/pict">>},
{<<".pict">>, <<"image/pict">>},
{<<".pkgdef">>, <<"text/plain">>},
{<<".pkgundef">>, <<"text/plain">>},
{<<".pko">>, <<"application/vnd.ms-pki.pko">>},
{<<".pls">>, <<"audio/scpls">>},
{<<".pma">>, <<"application/x-perfmon">>},
{<<".pmc">>, <<"application/x-perfmon">>},
{<<".pml">>, <<"application/x-perfmon">>},
{<<".pmr">>, <<"application/x-perfmon">>},
{<<".pmw">>, <<"application/x-perfmon">>},
{<<".png">>, <<"image/png">>},
{<<".pnm">>, <<"image/x-portable-anymap">>},
{<<".pnt">>, <<"image/x-macpaint">>},
{<<".pntg">>, <<"image/x-macpaint">>},
{<<".pnz">>, <<"image/png">>},
{<<".pot">>, <<"application/vnd.ms-powerpoint">>},
{<<".potm">>, <<"application/vnd.ms-powerpoint.template.macroEnabled.12">>},
{<<".potx">>, <<"application/vnd.openxmlformats-officedocument.presentationml.template">>},
{<<".ppa">>, <<"application/vnd.ms-powerpoint">>},
{<<".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">>},
{<<".prm">>, <<"application/octet-stream">>},
{<<".prx">>, <<"application/octet-stream">>},
{<<".ps">>, <<"application/postscript">>},
{<<".psc1">>, <<"application/PowerShell">>},
{<<".psd">>, <<"application/octet-stream">>},
{<<".psess">>, <<"application/xml">>},
{<<".psm">>, <<"application/octet-stream">>},
{<<".psp">>, <<"application/octet-stream">>},
{<<".pub">>, <<"application/x-mspublisher">>},
{<<".pwz">>, <<"application/vnd.ms-powerpoint">>},
{<<".qht">>, <<"text/x-html-insertion">>},
{<<".qhtm">>, <<"text/x-html-insertion">>},
{<<".qt">>, <<"video/quicktime">>},
{<<".qti">>, <<"image/x-quicktime">>},
{<<".qtif">>, <<"image/x-quicktime">>},
{<<".qtl">>, <<"application/x-quicktimeplayer">>},
{<<".qxd">>, <<"application/octet-stream">>},
{<<".ra">>, <<"audio/x-pn-realaudio">>},
{<<".ram">>, <<"audio/x-pn-realaudio">>},
{<<".rar">>, <<"application/x-rar-compressed">>},
{<<".ras">>, <<"image/x-cmu-raster">>},
{<<".rat">>, <<"application/rat-file">>},
{<<".rc">>, <<"text/plain">>},
{<<".rc2">>, <<"text/plain">>},
{<<".rct">>, <<"text/plain">>},
{<<".rdlc">>, <<"application/xml">>},
{<<".reg">>, <<"text/plain">>},
{<<".resx">>, <<"application/xml">>},
{<<".rf">>, <<"image/vnd.rn-realflash">>},
{<<".rgb">>, <<"image/x-rgb">>},
{<<".rgs">>, <<"text/plain">>},
{<<".rm">>, <<"application/vnd.rn-realmedia">>},
{<<".rmi">>, <<"audio/mid">>},
{<<".rmp">>, <<"application/vnd.rn-rn_music_package">>},
{<<".roff">>, <<"application/x-troff">>},
{<<".rpm">>, <<"audio/x-pn-realaudio-plugin">>},
{<<".rqy">>, <<"text/x-ms-rqy">>},
{<<".rtf">>, <<"application/rtf">>},
{<<".rtx">>, <<"text/richtext">>},
{<<".ruleset">>, <<"application/xml">>},
{<<".s">>, <<"text/plain">>},
{<<".safariextz">>, <<"application/x-safari-safariextz">>},
{<<".scd">>, <<"application/x-msschedule">>},
{<<".scr">>, <<"text/plain">>},
{<<".sct">>, <<"text/scriptlet">>},
{<<".sd2">>, <<"audio/x-sd2">>},
{<<".sdp">>, <<"application/sdp">>},
{<<".sea">>, <<"application/octet-stream">>},
{<<".searchConnector-ms">>, <<"application/windows-search-connector+xml">>},
{<<".setpay">>, <<"application/set-payment-initiation">>},
{<<".setreg">>, <<"application/set-registration-initiation">>},
{<<".settings">>, <<"application/xml">>},
{<<".sgimb">>, <<"application/x-sgimb">>},
{<<".sgml">>, <<"text/sgml">>},
{<<".sh">>, <<"application/x-sh">>},
{<<".shar">>, <<"application/x-shar">>},
{<<".shtml">>, <<"text/html">>},
{<<".sit">>, <<"application/x-stuffit">>},
{<<".sitemap">>, <<"application/xml">>},
{<<".skin">>, <<"application/xml">>},
{<<".sldm">>, <<"application/vnd.ms-powerpoint.slide.macroEnabled.12">>},
{<<".sldx">>, <<"application/vnd.openxmlformats-officedocument.presentationml.slide">>},
{<<".slk">>, <<"application/vnd.ms-excel">>},
{<<".sln">>, <<"text/plain">>},
{<<".slupkg-ms">>, <<"application/x-ms-license">>},
{<<".smd">>, <<"audio/x-smd">>},
{<<".smi">>, <<"application/octet-stream">>},
{<<".smx">>, <<"audio/x-smd">>},
{<<".smz">>, <<"audio/x-smd">>},
{<<".snd">>, <<"audio/basic">>},
{<<".snippet">>, <<"application/xml">>},
{<<".snp">>, <<"application/octet-stream">>},
{<<".sol">>, <<"text/plain">>},
{<<".sor">>, <<"text/plain">>},
{<<".spc">>, <<"application/x-pkcs7-certificates">>},
{<<".spl">>, <<"application/futuresplash">>},
{<<".spx">>, <<"audio/ogg">>},
{<<".src">>, <<"application/x-wais-source">>},
{<<".srf">>, <<"text/plain">>},
{<<".SSISDeploymentManifest">>, <<"text/xml">>},
{<<".ssm">>, <<"application/streamingmedia">>},
{<<".sst">>, <<"application/vnd.ms-pki.certstore">>},
{<<".stl">>, <<"application/vnd.ms-pki.stl">>},
{<<".sv4cpio">>, <<"application/x-sv4cpio">>},
{<<".sv4crc">>, <<"application/x-sv4crc">>},
{<<".svc">>, <<"application/xml">>},
{<<".svg">>, <<"image/svg+xml">>},
{<<".swf">>, <<"application/x-shockwave-flash">>},
{<<".t">>, <<"application/x-troff">>},
{<<".tar">>, <<"application/x-tar">>},
{<<".tcl">>, <<"application/x-tcl">>},
{<<".testrunconfig">>, <<"application/xml">>},
{<<".testsettings">>, <<"application/xml">>},
{<<".tex">>, <<"application/x-tex">>},
{<<".texi">>, <<"application/x-texinfo">>},
{<<".texinfo">>, <<"application/x-texinfo">>},
{<<".tgz">>, <<"application/x-compressed">>},
{<<".thmx">>, <<"application/vnd.ms-officetheme">>},
{<<".thn">>, <<"application/octet-stream">>},
{<<".tif">>, <<"image/tiff">>},
{<<".tiff">>, <<"image/tiff">>},
{<<".tlh">>, <<"text/plain">>},
{<<".tli">>, <<"text/plain">>},
{<<".toc">>, <<"application/octet-stream">>},
{<<".tr">>, <<"application/x-troff">>},
{<<".trm">>, <<"application/x-msterminal">>},
{<<".trx">>, <<"application/xml">>},
{<<".ts">>, <<"video/vnd.dlna.mpeg-tts">>},
{<<".tsv">>, <<"text/tab-separated-values">>},
{<<".ttf">>, <<"application/font-sfnt">>},
{<<".tts">>, <<"video/vnd.dlna.mpeg-tts">>},
{<<".txt">>, <<"text/plain">>},
{<<".u32">>, <<"application/octet-stream">>},
{<<".uls">>, <<"text/iuls">>},
{<<".user">>, <<"text/plain">>},
{<<".ustar">>, <<"application/x-ustar">>},
{<<".vb">>, <<"text/plain">>},
{<<".vbdproj">>, <<"text/plain">>},
{<<".vbk">>, <<"video/mpeg">>},
{<<".vbproj">>, <<"text/plain">>},
{<<".vbs">>, <<"text/vbscript">>},
{<<".vcf">>, <<"text/x-vcard">>},
{<<".vcproj">>, <<"application/xml">>},
{<<".vcs">>, <<"text/plain">>},
{<<".vcxproj">>, <<"application/xml">>},
{<<".vddproj">>, <<"text/plain">>},
{<<".vdp">>, <<"text/plain">>},
{<<".vdproj">>, <<"text/plain">>},
{<<".vdx">>, <<"application/vnd.ms-visio.viewer">>},
{<<".vml">>, <<"text/xml">>},
{<<".vscontent">>, <<"application/xml">>},
{<<".vsct">>, <<"text/xml">>},
{<<".vsd">>, <<"application/vnd.visio">>},
{<<".vsi">>, <<"application/ms-vsi">>},
{<<".vsix">>, <<"application/vsix">>},
{<<".vsixlangpack">>, <<"text/xml">>},
{<<".vsixmanifest">>, <<"text/xml">>},
{<<".vsmdi">>, <<"application/xml">>},
{<<".vspscc">>, <<"text/plain">>},
{<<".vss">>, <<"application/vnd.visio">>},
{<<".vsscc">>, <<"text/plain">>},
{<<".vssettings">>, <<"text/xml">>},
{<<".vssscc">>, <<"text/plain">>},
{<<".vst">>, <<"application/vnd.visio">>},
{<<".vstemplate">>, <<"text/xml">>},
{<<".vsto">>, <<"application/x-ms-vsto">>},
{<<".vsw">>, <<"application/vnd.visio">>},
{<<".vsx">>, <<"application/vnd.visio">>},
{<<".vtx">>, <<"application/vnd.visio">>},
{<<".wav">>, <<"audio/wav">>},
{<<".wave">>, <<"audio/wav">>},
{<<".wax">>, <<"audio/x-ms-wax">>},
{<<".wbk">>, <<"application/msword">>},
{<<".wbmp">>, <<"image/vnd.wap.wbmp">>},
{<<".wcm">>, <<"application/vnd.ms-works">>},
{<<".wdb">>, <<"application/vnd.ms-works">>},
{<<".wdp">>, <<"image/vnd.ms-photo">>},
{<<".webarchive">>, <<"application/x-safari-webarchive">>},
{<<".webm">>, <<"video/webm">>},
{<<".webp">>, <<"image/webp">>},
{<<".webtest">>, <<"application/xml">>},
{<<".wiq">>, <<"application/xml">>},
{<<".wiz">>, <<"application/msword">>},
{<<".wks">>, <<"application/vnd.ms-works">>},
{<<".WLMP">>, <<"application/wlmoviemaker">>},
{<<".wlpginstall">>, <<"application/x-wlpg-detect">>},
{<<".wlpginstall3">>, <<"application/x-wlpg3-detect">>},
{<<".wm">>, <<"video/x-ms-wm">>},
{<<".wma">>, <<"audio/x-ms-wma">>},
{<<".wmd">>, <<"application/x-ms-wmd">>},
{<<".wmf">>, <<"application/x-msmetafile">>},
{<<".wml">>, <<"text/vnd.wap.wml">>},
{<<".wmlc">>, <<"application/vnd.wap.wmlc">>},
{<<".wmls">>, <<"text/vnd.wap.wmlscript">>},
{<<".wmlsc">>, <<"application/vnd.wap.wmlscriptc">>},
{<<".wmp">>, <<"video/x-ms-wmp">>},
{<<".wmv">>, <<"video/x-ms-wmv">>},
{<<".wmx">>, <<"video/x-ms-wmx">>},
{<<".wmz">>, <<"application/x-ms-wmz">>},
{<<".woff">>, <<"application/font-woff">>},
{<<".wpl">>, <<"application/vnd.ms-wpl">>},
{<<".wps">>, <<"application/vnd.ms-works">>},
{<<".wri">>, <<"application/x-mswrite">>},
{<<".wrl">>, <<"x-world/x-vrml">>},
{<<".wrz">>, <<"x-world/x-vrml">>},
{<<".wsc">>, <<"text/scriptlet">>},
{<<".wsdl">>, <<"text/xml">>},
{<<".wvx">>, <<"video/x-ms-wvx">>},
{<<".x">>, <<"application/directx">>},
{<<".xaf">>, <<"x-world/x-vrml">>},
{<<".xaml">>, <<"application/xaml+xml">>},
{<<".xap">>, <<"application/x-silverlight-app">>},
{<<".xbap">>, <<"application/x-ms-xbap">>},
{<<".xbm">>, <<"image/x-xbitmap">>},
{<<".xdr">>, <<"text/plain">>},
{<<".xht">>, <<"application/xhtml+xml">>},
{<<".xhtml">>, <<"application/xhtml+xml">>},
{<<".xla">>, <<"application/vnd.ms-excel">>},
{<<".xlam">>, <<"application/vnd.ms-excel.addin.macroEnabled.12">>},
{<<".xlc">>, <<"application/vnd.ms-excel">>},
{<<".xld">>, <<"application/vnd.ms-excel">>},
{<<".xlk">>, <<"application/vnd.ms-excel">>},
{<<".xll">>, <<"application/vnd.ms-excel">>},
{<<".xlm">>, <<"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">>, <<"applicationvnd.openxmlformats-officedocument.spreadsheetml.sheet">>},
{<<".xlt">>, <<"application/vnd.ms-excel">>},
{<<".xltm">>, <<"application/vnd.ms-excel.template.macroEnabled.12">>},
{<<".xltx">>, <<"application/vnd.openxmlformats-officedocument.spreadsheetml.template">>},
{<<".xlw">>, <<"application/vnd.ms-excel">>},
{<<".xml">>, <<"text/xml">>},
{<<".xmta">>, <<"application/xml">>},
{<<".xof">>, <<"x-world/x-vrml">>},
{<<".XOML">>, <<"text/plain">>},
{<<".xpm">>, <<"image/x-xpixmap">>},
{<<".xps">>, <<"application/vnd.ms-xpsdocument">>},
{<<".xrm-ms">>, <<"text/xml">>},
{<<".xsc">>, <<"application/xml">>},
{<<".xsd">>, <<"text/xml">>},
{<<".xsf">>, <<"text/xml">>},
{<<".xsl">>, <<"text/xml">>},
{<<".xslt">>, <<"text/xml">>},
{<<".xsn">>, <<"application/octet-stream">>},
{<<".xss">>, <<"application/xml">>},
{<<".xspf">>, <<"application/xspf+xml">>},
{<<".xtp">>, <<"application/octet-stream">>},
{<<".xwd">>, <<"image/x-xwindowdump">>},
{<<".z">>, <<"application/x-compress">>},
{<<".zip">>, <<"application/zip">>}
].
-spec mime_types() -> [{mime_type(), extension()}].
mime_types() ->
[
{<<"application/fsharp-script">>, <<".fsx">>},
{<<"application/msaccess">>, <<".adp">>},
{<<"application/msword">>, <<".doc">>},
{<<"application/octet-stream">>, <<".bin">>},
{<<"application/onenote">>, <<".one">>},
{<<"application/postscript">>, <<".eps">>},
{<<"application/vnd.ms-excel">>, <<".xls">>},
{<<"application/vnd.ms-powerpoint">>, <<".ppt">>},
{<<"application/vnd.ms-works">>, <<".wks">>},
{<<"application/vnd.visio">>, <<".vsd">>},
{<<"application/x-director">>, <<".dir">>},
{<<"application/x-shockwave-flash">>, <<".swf">>},
{<<"application/x-x509-ca-cert">>, <<".cer">>},
{<<"application/x-zip-compressed">>, <<".zip">>},
{<<"application/xhtml+xml">>, <<".xhtml">>},
{<<"application/xml">>, <<".xml">>},
{<<"audio/aac">>, <<".AAC">>},
{<<"audio/aiff">>, <<".aiff">>},
{<<"audio/basic">>, <<".snd">>},
{<<"audio/mid">>, <<".midi">>},
{<<"audio/wav">>, <<".wav">>},
{<<"audio/x-mpegurl">>, <<".m3u">>},
{<<"audio/x-pn-realaudio">>, <<".ra">>},
{<<"audio/x-smd">>, <<".smd">>},
{<<"image/bmp">>, <<".bmp">>},
{<<"image/jpeg">>, <<".jpg">>},
{<<"image/pict">>, <<".pic">>},
{<<"image/png">>, <<".png">>},
{<<"image/tiff">>, <<".tiff">>},
{<<"image/x-macpaint">>, <<".mac">>},
{<<"image/x-quicktime">>, <<".qti">>},
{<<"message/rfc822">>, <<".eml">>},
{<<"text/html">>, <<".html">>},
{<<"text/plain">>, <<".txt">>},
{<<"text/scriptlet">>, <<".wsc">>},
{<<"text/xml">>, <<".xml">>},
{<<"video/3gpp">>, <<".3gp">>},
{<<"video/3gpp2">>, <<".3gp2">>},
{<<"video/mp4">>, <<".mp4">>},
{<<"video/mpeg">>, <<".mpg">>},
{<<"video/quicktime">>, <<".mov">>},
{<<"video/vnd.dlna.mpeg-tts">>, <<".m2t">>},
{<<"video/x-dv">>, <<".dv">>},
{<<"video/x-la-asf">>, <<".lsf">>},
{<<"video/x-ms-asf">>, <<".asf">>},
{<<"x-world/x-vrml">>, <<".xof">>}
].