%% @author Bob Ippolito %% @copyright 2007 Mochi Media, Inc. %% @doc Gives a good MIME type guess based on file extension. -module(mochiweb_mime). -author('bob@mochimedia.com'). -export([from_extension/1]). %% @spec from_extension(S::string()) -> string() | undefined %% @doc Given a filename extension (e.g. ".html") return a guess for the MIME %% type such as "text/html". Will return the atom undefined if no good %% guess is available. from_extension(".html") -> "text/html"; from_extension(".xhtml") -> "application/xhtml+xml"; from_extension(".xml") -> "application/xml"; from_extension(".css") -> "text/css"; from_extension(".js") -> "application/x-javascript"; from_extension(".jpg") -> "image/jpeg"; from_extension(".gif") -> "image/gif"; from_extension(".png") -> "image/png"; from_extension(".swf") -> "application/x-shockwave-flash"; from_extension(".zip") -> "application/zip"; from_extension(".bz2") -> "application/x-bzip2"; from_extension(".gz") -> "application/x-gzip"; from_extension(".tar") -> "application/x-tar"; from_extension(".tgz") -> "application/x-gzip"; from_extension(".txt") -> "text/plain"; from_extension(".doc") -> "application/msword"; from_extension(".pdf") -> "application/pdf"; from_extension(".xls") -> "application/vnd.ms-excel"; from_extension(".rtf") -> "application/rtf"; from_extension(".mov") -> "video/quicktime"; from_extension(".mp3") -> "audio/mpeg"; from_extension(".z") -> "application/x-compress"; from_extension(".wav") -> "audio/x-wav"; from_extension(".ico") -> "image/x-icon"; from_extension(".bmp") -> "image/bmp"; from_extension(".m4a") -> "audio/mpeg"; from_extension(".m3u") -> "audio/x-mpegurl"; from_extension(".exe") -> "application/octet-stream"; from_extension(".csv") -> "text/csv"; from_extension(_) -> undefined. %% %% Tests %% -include_lib("eunit/include/eunit.hrl"). -ifdef(TEST). exhaustive_from_extension_test() -> T = mochiweb_cover:clause_lookup_table(?MODULE, from_extension), [?assertEqual(V, from_extension(K)) || {K, V} <- T]. from_extension_test() -> ?assertEqual("text/html", from_extension(".html")), ?assertEqual(undefined, from_extension("")), ?assertEqual(undefined, from_extension(".wtf")), ok. -endif.