/*
* #%L
* Wisdom-Framework
* %%
* Copyright (C) 2013 - 2014 Wisdom Framework
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package org.wisdom.api.utils;
import org.wisdom.api.http.MimeTypes;
import java.util.*;
/**
* A list of known mime types by extensions.
* This is the old version to check that we support the same extension set.
*/
public final class OldKnownMimeTypes {
/**
* The map associating extension to mime-types.
*/
public static final Map<String, String> EXTENSIONS;
private OldKnownMimeTypes() {
//Hide implicit constructor
}
/**
* MPEG video.
*/
public static final String VIDEO_MPEG = "video/mpeg";
/**
* JPEG image.
*/
public static final String IMAGE_JPEG = "image/jpeg";
/**
* x-3dmf.
*/
private static final String X_WORLD_X_3DMF = "x-world/x-3dmf";
/**
* Builds the list of known mime type.
* For each extension the mime type is specified. This allows retrieving mime-types very easily and efficiently.
* Obviously, this list is incomplete, but contains most of the used extension.
*/
static {
EXTENSIONS = new TreeMap<>();
EXTENSIONS.put("3dm", X_WORLD_X_3DMF);
EXTENSIONS.put("3dmf", X_WORLD_X_3DMF);
EXTENSIONS.put("7z", "application/x-7z-compressed");
EXTENSIONS.put("a", MimeTypes.BINARY);
EXTENSIONS.put("aab", "application/x-authorware-bin");
EXTENSIONS.put("aam", "application/x-authorware-map");
EXTENSIONS.put("aas", "application/x-authorware-seg");
EXTENSIONS.put("abc", "text/vndabc");
EXTENSIONS.put("ace", "application/x-ace-compressed");
EXTENSIONS.put("ai", "application/postscript");
EXTENSIONS.put("aim", "application/x-aim");
EXTENSIONS.put("alz", "application/x-alz-compressed");
EXTENSIONS.put("ani", "application/x-navi-animation");
EXTENSIONS.put("aos", "application/x-nokia-9000-communicator-add-on-software");
EXTENSIONS.put("aps", "application/mime");
EXTENSIONS.put("arc", "application/x-arc-compressed");
EXTENSIONS.put("arj", "application/arj");
EXTENSIONS.put("asm", "text/x-asm");
EXTENSIONS.put("asp", "text/asp");
EXTENSIONS.put("asx", "application/x-mplayer2");
EXTENSIONS.put("bcpio", "application/x-bcpio");
EXTENSIONS.put("bin", "application/mac-binary");
EXTENSIONS.put("boo", "application/book");
EXTENSIONS.put("book", "application/book");
EXTENSIONS.put("boz", "application/x-bzip2");
EXTENSIONS.put("bsh", "application/x-bsh");
EXTENSIONS.put("bz2", "application/x-bzip2");
EXTENSIONS.put("bz", "application/x-bzip");
EXTENSIONS.put("c++", MimeTypes.TEXT);
EXTENSIONS.put("c", "text/x-c");
EXTENSIONS.put("cab", "application/vnd.ms-cab-compressed");
EXTENSIONS.put("cat", "application/vndms-pkiseccat");
EXTENSIONS.put("cc", "text/x-c");
EXTENSIONS.put("ccad", "application/clariscad");
EXTENSIONS.put("cco", "application/x-cocoa");
EXTENSIONS.put("cdf", "application/cdf");
EXTENSIONS.put("cer", "application/pkix-cert");
EXTENSIONS.put("cha", "application/x-chat");
EXTENSIONS.put("chat", "application/x-chat");
EXTENSIONS.put("com", MimeTypes.TEXT);
EXTENSIONS.put("conf", MimeTypes.TEXT);
EXTENSIONS.put("cpio", "application/x-cpio");
EXTENSIONS.put("cpp", "text/x-c");
EXTENSIONS.put("cpt", "application/mac-compactpro");
EXTENSIONS.put("crl", "application/pkcs-crl");
EXTENSIONS.put("crt", "application/pkix-cert");
EXTENSIONS.put("crx", "application/x-chrome-extension");
EXTENSIONS.put("csh", "text/x-scriptcsh");
EXTENSIONS.put("csv", "text/csv");
EXTENSIONS.put("cxx", MimeTypes.TEXT);
EXTENSIONS.put("dar", "application/x-dar");
EXTENSIONS.put("dcr", "application/x-director");
EXTENSIONS.put("deb", "application/x-debian-package");
EXTENSIONS.put("deepv", "application/x-deepv");
EXTENSIONS.put("def", MimeTypes.TEXT);
EXTENSIONS.put("der", "application/x-x509-ca-cert");
EXTENSIONS.put("dir", "application/x-director");
EXTENSIONS.put("dmg", "application/x-apple-diskimage");
EXTENSIONS.put("dp", "application/commonground");
EXTENSIONS.put("drw", "application/drafting");
EXTENSIONS.put("dump", MimeTypes.BINARY);
EXTENSIONS.put("dvi", "application/x-dvi");
EXTENSIONS.put("dwf", "drawing/x-dwf=(old)");
EXTENSIONS.put("dwg", "application/acad");
EXTENSIONS.put("dxf", "application/dxf");
EXTENSIONS.put("dxr", "application/x-director");
EXTENSIONS.put("el", "text/x-scriptelisp");
EXTENSIONS.put("elc", "application/x-bytecodeelisp=(compiled=elisp)");
EXTENSIONS.put("eml", "message/rfc822");
EXTENSIONS.put("env", "application/x-envoy");
EXTENSIONS.put("eps", "application/postscript");
EXTENSIONS.put("es", "application/x-esrehber");
EXTENSIONS.put("etx", "text/x-setext");
EXTENSIONS.put("evy", "application/envoy");
EXTENSIONS.put("exe", MimeTypes.BINARY);
EXTENSIONS.put("f77", "text/x-fortran");
EXTENSIONS.put("f90", "text/x-fortran");
EXTENSIONS.put("f", "text/x-fortran");
EXTENSIONS.put("fdf", "application/vndfdf");
EXTENSIONS.put("fif", "application/fractals");
EXTENSIONS.put("flx", "text/vndfmiflexstor");
EXTENSIONS.put("for", "text/x-fortran");
EXTENSIONS.put("frl", "application/freeloader");
EXTENSIONS.put("g", MimeTypes.TEXT);
EXTENSIONS.put("gsp", "application/x-gsp");
EXTENSIONS.put("gss", "application/x-gss");
EXTENSIONS.put("gtar", "application/x-gtar");
EXTENSIONS.put("gz", "application/x-compressed");
EXTENSIONS.put("gzip", "application/x-gzip");
EXTENSIONS.put("h", "text/x-h");
EXTENSIONS.put("hdf", "application/x-hdf");
EXTENSIONS.put("help", "application/x-helpfile");
EXTENSIONS.put("hgl", "application/vndhp-hpgl");
EXTENSIONS.put("hh", "text/x-h");
EXTENSIONS.put("hlb", "text/x-script");
EXTENSIONS.put("hlp", "application/hlp");
EXTENSIONS.put("hpg", "application/vndhp-hpgl");
EXTENSIONS.put("hpgl", "application/vndhp-hpgl");
EXTENSIONS.put("hqx", "application/binhex");
EXTENSIONS.put("hta", "application/hta");
EXTENSIONS.put("htc", "text/x-component");
EXTENSIONS.put("ice", "x-conference/x-cooltalk");
EXTENSIONS.put("ics", "text/calendar");
EXTENSIONS.put("icz", "text/calendar");
EXTENSIONS.put("idc", MimeTypes.TEXT);
EXTENSIONS.put("iges", "application/iges");
EXTENSIONS.put("igs", "application/iges");
EXTENSIONS.put("ima", "application/x-ima");
EXTENSIONS.put("imap", "application/x-httpd-imap");
EXTENSIONS.put("inf", "application/inf");
EXTENSIONS.put("ins", "application/x-internett-signup");
EXTENSIONS.put("ip", "application/x-ip2");
EXTENSIONS.put("iv", "application/x-inventor");
EXTENSIONS.put("ivr", "i-world/i-vrml");
EXTENSIONS.put("ivy", "application/x-livescreen");
EXTENSIONS.put("ksh", "text/x-scriptksh");
EXTENSIONS.put("latex", "application/x-latex");
EXTENSIONS.put("lha", "application/lha");
EXTENSIONS.put("lhx", MimeTypes.BINARY);
EXTENSIONS.put("list", MimeTypes.TEXT);
EXTENSIONS.put("log", MimeTypes.TEXT);
EXTENSIONS.put("lsp", "text/x-scriptlisp");
EXTENSIONS.put("lst", MimeTypes.TEXT);
EXTENSIONS.put("lsx", "text/x-la-asf");
EXTENSIONS.put("ltx", "application/x-latex");
EXTENSIONS.put("lzh", MimeTypes.BINARY);
EXTENSIONS.put("lzx", "application/lzx");
EXTENSIONS.put("m", "text/x-m");
EXTENSIONS.put("man", "application/x-troff-man");
EXTENSIONS.put("manifest", "text/cache-manifest");
EXTENSIONS.put("map", "application/x-navimap");
EXTENSIONS.put("mar", MimeTypes.TEXT);
EXTENSIONS.put("mbd", "application/mbedlet");
EXTENSIONS.put("mc$", "application/x-magic-cap-package-10");
EXTENSIONS.put("mcd", "application/mcad");
EXTENSIONS.put("mcf", "text/mcf");
EXTENSIONS.put("mcp", "application/netmc");
EXTENSIONS.put("me", "application/x-troff-me");
EXTENSIONS.put("mht", "message/rfc822");
EXTENSIONS.put("mid", "application/x-midi");
EXTENSIONS.put("midi", "application/x-midi");
EXTENSIONS.put("mif", "application/x-frame");
EXTENSIONS.put("mime", "message/rfc822");
EXTENSIONS.put("mm", "application/base64");
EXTENSIONS.put("mme", "application/base64");
EXTENSIONS.put("mpc", "application/x-project");
EXTENSIONS.put("mpp", "application/vndms-project");
EXTENSIONS.put("mpt", "application/x-project");
EXTENSIONS.put("mpv", "application/x-project");
EXTENSIONS.put("mpx", "application/x-project");
EXTENSIONS.put("mrc", "application/marc");
EXTENSIONS.put("ms", "application/x-troff-ms");
EXTENSIONS.put("nc", "application/x-netcdf");
EXTENSIONS.put("ncm", "application/vndnokiaconfiguration-message");
EXTENSIONS.put("nix", "application/x-mix-transfer");
EXTENSIONS.put("nsc", "application/x-conference");
EXTENSIONS.put("nvd", "application/x-navidoc");
EXTENSIONS.put("o", MimeTypes.BINARY);
EXTENSIONS.put("oda", "application/oda");
EXTENSIONS.put("omc", "application/x-omc");
EXTENSIONS.put("omcd", "application/x-omcdatamaker");
EXTENSIONS.put("omcr", "application/x-omcregerator");
EXTENSIONS.put("p10", "application/pkcs10");
EXTENSIONS.put("p12", "application/pkcs-12");
EXTENSIONS.put("p7a", "application/x-pkcs7-signature");
EXTENSIONS.put("p7c", "application/pkcs7-mime");
EXTENSIONS.put("p7m", "application/pkcs7-mime");
EXTENSIONS.put("p7r", "application/x-pkcs7-certreqresp");
EXTENSIONS.put("p7s", "application/pkcs7-signature");
EXTENSIONS.put("p", "text/x-pascal");
EXTENSIONS.put("part", "application/pro_eng");
EXTENSIONS.put("pas", "text/pascal");
EXTENSIONS.put("pcl", "application/vndhp-pcl");
EXTENSIONS.put("pdb", "chemical/x-pdb");
EXTENSIONS.put("pdf", "application/pdf");
EXTENSIONS.put("pkg", "application/x-newton-compatible-pkg");
EXTENSIONS.put("pko", "application/vndms-pkipko");
EXTENSIONS.put("pl", "text/x-scriptperl");
EXTENSIONS.put("plx", "application/x-pixclscript");
EXTENSIONS.put("pm4", "application/x-pagemaker");
EXTENSIONS.put("pm5", "application/x-pagemaker");
EXTENSIONS.put("pm", "text/x-scriptperl-module");
EXTENSIONS.put("pnm", "application/x-portable-anymap");
EXTENSIONS.put("pov", "model/x-pov");
EXTENSIONS.put("pre", "application/x-freelance");
EXTENSIONS.put("prt", "application/pro_eng");
EXTENSIONS.put("ps", "application/postscript");
EXTENSIONS.put("psd", MimeTypes.BINARY);
EXTENSIONS.put("pvu", "paleovu/x-pv");
EXTENSIONS.put("py", "text/x-scriptphyton");
EXTENSIONS.put("pyc", "applicaiton/x-bytecodepython");
EXTENSIONS.put("qd3", X_WORLD_X_3DMF);
EXTENSIONS.put("qd3d", X_WORLD_X_3DMF);
EXTENSIONS.put("rar", "application/x-rar-compressed");
EXTENSIONS.put("ras", "application/x-cmu-raster");
EXTENSIONS.put("rexx", "text/x-scriptrexx");
EXTENSIONS.put("rm", "application/vndrn-realmedia");
EXTENSIONS.put("rng", "application/ringing-tones");
EXTENSIONS.put("rnx", "application/vndrn-realplayer");
EXTENSIONS.put("roff", "application/x-troff");
EXTENSIONS.put("rt", "text/vndrn-realtext");
EXTENSIONS.put("rtf", "text/richtext");
EXTENSIONS.put("rtx", "text/richtext");
EXTENSIONS.put("s", "text/x-asm");
EXTENSIONS.put("s7z", "application/x-7z-compressed");
EXTENSIONS.put("saveme", MimeTypes.BINARY);
EXTENSIONS.put("sbk", "application/x-tbook");
EXTENSIONS.put("scm", "text/x-scriptscheme");
EXTENSIONS.put("sdml", MimeTypes.TEXT);
EXTENSIONS.put("sdp", "application/sdp");
EXTENSIONS.put("sdr", "application/sounder");
EXTENSIONS.put("sea", "application/sea");
EXTENSIONS.put("set", "application/set");
EXTENSIONS.put("sgm", "text/x-sgml");
EXTENSIONS.put("sgml", "text/x-sgml");
EXTENSIONS.put("sh", "text/x-scriptsh");
EXTENSIONS.put("shar", "application/x-bsh");
EXTENSIONS.put("skd", "application/x-koan");
EXTENSIONS.put("skm", "application/x-koan");
EXTENSIONS.put("skp", "application/x-koan");
EXTENSIONS.put("skt", "application/x-koan");
EXTENSIONS.put("sit", "application/x-stuffit");
EXTENSIONS.put("sitx", "application/x-stuffitx");
EXTENSIONS.put("sl", "application/x-seelogo");
EXTENSIONS.put("smi", "application/smil");
EXTENSIONS.put("smil", "application/smil");
EXTENSIONS.put("sol", "application/solids");
EXTENSIONS.put("spc", "text/x-speech");
EXTENSIONS.put("spl", "application/futuresplash");
EXTENSIONS.put("spr", "application/x-sprite");
EXTENSIONS.put("sprite", "application/x-sprite");
EXTENSIONS.put("src", "application/x-wais-source");
EXTENSIONS.put("ssm", "application/streamingmedia");
EXTENSIONS.put("sst", "application/vndms-pkicertstore");
EXTENSIONS.put("step", "application/step");
EXTENSIONS.put("stl", "application/sla");
EXTENSIONS.put("stp", "application/step");
EXTENSIONS.put("sv4cpio", "application/x-sv4cpio");
EXTENSIONS.put("sv4crc", "application/x-sv4crc");
EXTENSIONS.put("svr", "application/x-world");
EXTENSIONS.put("swf", "application/x-shockwave-flash");
EXTENSIONS.put("t", "application/x-troff");
EXTENSIONS.put("talk", "text/x-speech");
EXTENSIONS.put("tar", "application/x-tar");
EXTENSIONS.put("tbk", "application/toolbook");
EXTENSIONS.put("tcl", "text/x-scripttcl");
EXTENSIONS.put("tcsh", "text/x-scripttcsh");
EXTENSIONS.put("tex", "application/x-tex");
EXTENSIONS.put("texi", "application/x-texinfo");
EXTENSIONS.put("texinfo", "application/x-texinfo");
EXTENSIONS.put("text", MimeTypes.TEXT);
EXTENSIONS.put("tgz", "application/gnutar");
EXTENSIONS.put("tr", "application/x-troff");
EXTENSIONS.put("tsp", "application/dsptype");
EXTENSIONS.put("tsv", "text/tab-separated-values");
EXTENSIONS.put("txt", MimeTypes.TEXT);
EXTENSIONS.put("uil", "text/x-uil");
EXTENSIONS.put("uni", "text/uri-list");
EXTENSIONS.put("unis", "text/uri-list");
EXTENSIONS.put("unv", "application/i-deas");
EXTENSIONS.put("uri", "text/uri-list");
EXTENSIONS.put("uris", "text/uri-list");
EXTENSIONS.put("ustar", "application/x-ustar");
EXTENSIONS.put("uu", "text/x-uuencode");
EXTENSIONS.put("uue", "text/x-uuencode");
EXTENSIONS.put("vcd", "application/x-cdlink");
EXTENSIONS.put("vcf", "text/x-vcard");
EXTENSIONS.put("vcard", "text/x-vcard");
EXTENSIONS.put("vcs", "text/x-vcalendar");
EXTENSIONS.put("vda", "application/vda");
EXTENSIONS.put("vew", "application/groupwise");
EXTENSIONS.put("vmd", "application/vocaltec-media-desc");
EXTENSIONS.put("vmf", "application/vocaltec-media-file");
EXTENSIONS.put("vrml", "application/x-vrml");
EXTENSIONS.put("vrt", "x-world/x-vrt");
// Visio:
final String visio = "application/x-visio";
EXTENSIONS.put("vsd", visio);
EXTENSIONS.put("vst", visio);
EXTENSIONS.put("vsw", visio);
EXTENSIONS.put("w60", "application/wordperfect60");
EXTENSIONS.put("w61", "application/wordperfect61");
EXTENSIONS.put("wb1", "application/x-qpro");
EXTENSIONS.put("web", "application/vndxara");
EXTENSIONS.put("wk1", "application/x-123");
EXTENSIONS.put("wmf", "windows/metafile");
EXTENSIONS.put("wml", "text/vnd.wap.wml");
EXTENSIONS.put("wmlc", "application/vnd.wap.wmlc");
EXTENSIONS.put("wmls", "text/vnd.wap.wmlscript");
EXTENSIONS.put("wmlsc", "application/vnd.wap.wmlscriptc");
EXTENSIONS.put("wp5", "application/wordperfect");
EXTENSIONS.put("wp6", "application/wordperfect");
EXTENSIONS.put("wp", "application/wordperfect");
EXTENSIONS.put("wpd", "application/wordperfect");
EXTENSIONS.put("wq1", "application/x-lotus");
EXTENSIONS.put("wri", "application/mswrite");
EXTENSIONS.put("wrl", "application/x-world");
EXTENSIONS.put("wrz", "model/vrml");
EXTENSIONS.put("wsc", "text/scriplet");
EXTENSIONS.put("wsrc", "application/x-wais-source");
EXTENSIONS.put("wtk", "application/x-wintalk");
EXTENSIONS.put("xgz", "xgl/drawing");
EXTENSIONS.put("xml", "text/xml");
EXTENSIONS.put("xmz", "xgl/movie");
EXTENSIONS.put("xpix", "application/x-vndls-xpix");
EXTENSIONS.put("xyz", "chemical/x-pdb");
EXTENSIONS.put("z", "application/x-compress");
EXTENSIONS.put("zip", "application/zip");
EXTENSIONS.put("zoo", MimeTypes.BINARY);
EXTENSIONS.put("zsh", "text/x-scriptzsh");
EXTENSIONS.put("kml", "application/vnd.google-earth.kml+xml");
EXTENSIONS.put("kmz", "application/vnd.google-earth.kmz");
//Extensions for Mozilla apps (Firefox and friends)
EXTENSIONS.put("xpi", "application/x-xpinstall");
addKDEExtensions();
addOffice2007Extensions();
addOfficeExtensions();
addOpenDocumentExtensions();
addIWorkExtensions();
addImageExtensions();
addAudioExtensions();
addVideoExtensions();
addWebExtensions();
}
/**
* Open Document.
*/
private static void addOpenDocumentExtensions() {
EXTENSIONS.put("odb", "application/vnd.oasis.opendocument.database");
EXTENSIONS.put("odc", "application/vnd.oasis.opendocument.chart");
EXTENSIONS.put("odf", "application/vnd.oasis.opendocument.formula");
EXTENSIONS.put("odg", "application/vnd.oasis.opendocument.graphics");
EXTENSIONS.put("odi", "application/vnd.oasis.opendocument.image");
EXTENSIONS.put("odm", "application/vnd.oasis.opendocument.text-master");
EXTENSIONS.put("odp", "application/vnd.oasis.opendocument.presentation");
EXTENSIONS.put("ods", "application/vnd.oasis.opendocument.spreadsheet");
EXTENSIONS.put("odt", "application/vnd.oasis.opendocument.text");
EXTENSIONS.put("otc", "application/vnd.oasis.opendocument.chart-template");
EXTENSIONS.put("otf", "application/vnd.oasis.opendocument.formula-template");
EXTENSIONS.put("otg", "application/vnd.oasis.opendocument.graphics-template");
EXTENSIONS.put("oth", "application/vnd.oasis.opendocument.text-web");
EXTENSIONS.put("oti", "application/vnd.oasis.opendocument.image-template");
EXTENSIONS.put("otm", "application/vnd.oasis.opendocument.text-master");
EXTENSIONS.put("otp", "application/vnd.oasis.opendocument.presentation-template");
EXTENSIONS.put("ots", "application/vnd.oasis.opendocument.spreadsheet-template");
EXTENSIONS.put("ott", "application/vnd.oasis.opendocument.text-template");
}
/**
* Web Assets.
*/
private static void addWebExtensions() {
EXTENSIONS.put("class", "application/java");
EXTENSIONS.put("css", "text/css");
EXTENSIONS.put("coffee", "text/coffeescript");
EXTENSIONS.put("html", MimeTypes.HTML);
EXTENSIONS.put("htmls", MimeTypes.HTML);
EXTENSIONS.put("htt", "text/webviewhtml");
EXTENSIONS.put("jav", "text/x-java-source");
EXTENSIONS.put("java", "text/x-java-source");
EXTENSIONS.put("jcm", "application/x-java-commerce");
EXTENSIONS.put("jnlp", "application/x-java-jnlp-file");
EXTENSIONS.put("js", "application/javascript");
EXTENSIONS.put("json", "application/json");
EXTENSIONS.put("mhtml", "message/rfc822");
EXTENSIONS.put("shtml", "text/x-server-parsed-html");
EXTENSIONS.put("ssi", "text/x-server-parsed-html");
EXTENSIONS.put("acgi", MimeTypes.HTML);
EXTENSIONS.put("htm", MimeTypes.HTML);
EXTENSIONS.put("htx", MimeTypes.HTML);
}
/**
* Images.
*/
private static void addImageExtensions() {
EXTENSIONS.put("fpx", "image/vndfpx");
EXTENSIONS.put("art", "image/x-jg");
EXTENSIONS.put("bmp", "image/bmp");
EXTENSIONS.put("flo", "image/florian");
EXTENSIONS.put("g3", "image/g3fax");
EXTENSIONS.put("gif", "image/gif");
EXTENSIONS.put("ief", "image/ief");
EXTENSIONS.put("iefs", "image/ief");
EXTENSIONS.put("ico", "image/x-icon");
EXTENSIONS.put("jps", "image/x-jps");
EXTENSIONS.put("jut", "image/jutvision");
EXTENSIONS.put("nap", "image/naplps");
EXTENSIONS.put("naplps", "image/naplps");
EXTENSIONS.put("nif", "image/x-niff");
EXTENSIONS.put("niff", "image/x-niff");
EXTENSIONS.put("pbm", "image/x-portable-bitmap");
EXTENSIONS.put("pct", "image/x-pict");
EXTENSIONS.put("pcx", "image/x-pcx");
EXTENSIONS.put("pgm", "image/x-portable-graymap");
EXTENSIONS.put("pic", "image/pict");
EXTENSIONS.put("pict", "image/pict");
EXTENSIONS.put("png", "image/png");
EXTENSIONS.put("ppm", "image/x-portable-pixmap");
EXTENSIONS.put("qif", "image/x-quicktime");
EXTENSIONS.put("qti", "image/x-quicktime");
EXTENSIONS.put("qtif", "image/x-quicktime");
EXTENSIONS.put("rast", "image/cmu-raster");
EXTENSIONS.put("rf", "image/vndrn-realflash");
EXTENSIONS.put("rgb", "image/x-rgb");
EXTENSIONS.put("rp", "image/vndrn-realpix");
EXTENSIONS.put("svf", "image/vnddwg");
EXTENSIONS.put("svg", "image/svg+xml");
EXTENSIONS.put("tif", "image/tiff");
EXTENSIONS.put("tiff", "image/tiff");
EXTENSIONS.put("turbot", "image/florian");
EXTENSIONS.put("wbmp", "image/vnd.wap.wbmp");
EXTENSIONS.put("x-png", "image/png");
EXTENSIONS.put("xbm", "image/x-xbitmap");
EXTENSIONS.put("xif", "image/vndxiff");
EXTENSIONS.put("xpm", "image/x-xpixmap");
EXTENSIONS.put("xwd", "image/x-xwd");
EXTENSIONS.put("jfif-tbnl", IMAGE_JPEG);
EXTENSIONS.put("jfif", IMAGE_JPEG);
EXTENSIONS.put("jpe", IMAGE_JPEG);
EXTENSIONS.put("jpeg", IMAGE_JPEG);
EXTENSIONS.put("jpg", IMAGE_JPEG);
}
/**
* Adds the Extension associated with KDE.
*/
private static void addKDEExtensions() {
EXTENSIONS.put("karbon", "application/vnd.kde.karbon");
EXTENSIONS.put("kfo", "application/vnd.kde.kformula");
EXTENSIONS.put("flw", "application/vnd.kde.kivio");
EXTENSIONS.put("kon", "application/vnd.kde.kontour");
EXTENSIONS.put("kpr", "application/vnd.kde.kpresenter");
EXTENSIONS.put("kpt", "application/vnd.kde.kpresenter");
EXTENSIONS.put("ksp", "application/vnd.kde.kspread");
EXTENSIONS.put("kwd", "application/vnd.kde.kword");
EXTENSIONS.put("kwt", "application/vnd.kde.kword");
EXTENSIONS.put("chrt", "application/vnd.kde.kchart");
}
/**
* Adds the Extensions associated with Microsoft Office.
*/
private static void addOfficeExtensions() {
EXTENSIONS.put("xl", "application/excel");
EXTENSIONS.put("xla", "application/excel");
EXTENSIONS.put("xlb", "application/excel");
EXTENSIONS.put("xlc", "application/excel");
EXTENSIONS.put("xld", "application/excel");
EXTENSIONS.put("xlk", "application/excel");
EXTENSIONS.put("xll", "application/excel");
EXTENSIONS.put("xlm", "application/excel");
EXTENSIONS.put("xls", "application/excel");
EXTENSIONS.put("xlt", "application/excel");
EXTENSIONS.put("xlv", "application/excel");
EXTENSIONS.put("xlw", "application/excel");
EXTENSIONS.put("word", "application/msword");
EXTENSIONS.put("doc", "application/msword");
EXTENSIONS.put("dot", "application/msword");
EXTENSIONS.put("w6w", "application/msword");
EXTENSIONS.put("wiz", "application/msword");
EXTENSIONS.put("pot", "application/mspowerpoint");
EXTENSIONS.put("pps", "application/mspowerpoint");
EXTENSIONS.put("ppt", "application/mspowerpoint");
EXTENSIONS.put("ppz", "application/mspowerpoint");
EXTENSIONS.put("pwz", "application/vndms-powerpoint");
EXTENSIONS.put("ppa", "application/vndms-powerpoint");
}
/**
* Adds iWORKS Extensions.
*/
private static void addIWorkExtensions() {
//iWork"
EXTENSIONS.put("key", "application/x-iwork-keynote-sffkey");
EXTENSIONS.put("kth", "application/x-iwork-keynote-sffkth");
EXTENSIONS.put("nmbtemplate", "application/x-iwork-numbers-sfftemplate");
EXTENSIONS.put("numbers", "application/x-iwork-numbers-sffnumbers");
EXTENSIONS.put("pages", "application/x-iwork-pages-sffpages");
EXTENSIONS.put("template", "application/x-iwork-pages-sfftemplate");
}
/**
* Adds audio extensions.
*/
private static void addAudioExtensions() {
EXTENSIONS.put("aif", "audio/aiff");
EXTENSIONS.put("aifc", "audio/aiff");
EXTENSIONS.put("aiff", "audio/aiff");
EXTENSIONS.put("aip", "text/x-audiosoft-intra");
EXTENSIONS.put("au", "audio/basic");
EXTENSIONS.put("funk", "audio/make");
EXTENSIONS.put("gsd", "audio/x-gsm");
EXTENSIONS.put("gsm", "audio/x-gsm");
EXTENSIONS.put("it", "audio/it");
EXTENSIONS.put("jam", "audio/x-jam");
EXTENSIONS.put("kar", "audio/midi");
EXTENSIONS.put("la", "audio/nspaudio");
EXTENSIONS.put("lam", "audio/x-liveaudio");
EXTENSIONS.put("lma", "audio/nspaudio");
EXTENSIONS.put("m2a", "audio/mpeg");
EXTENSIONS.put("m3u", "audio/x-mpegurl");
EXTENSIONS.put("mjf", "audio/x-vndaudioexplosionmjuicemediafile");
EXTENSIONS.put("mod", "audio/mod");
EXTENSIONS.put("mp2", "audio/mpeg");
EXTENSIONS.put("mp3", "audio/mpeg3");
EXTENSIONS.put("mpa", "audio/mpeg");
EXTENSIONS.put("mpga", "audio/mpeg");
EXTENSIONS.put("my", "audio/make");
EXTENSIONS.put("mzz", "application/x-vndaudioexplosionmzz");
EXTENSIONS.put("oga", "audio/ogg");
EXTENSIONS.put("ogg", "audio/ogg");
EXTENSIONS.put("pfunk", "audio/make");
EXTENSIONS.put("qcp", "audio/vndqcelp");
EXTENSIONS.put("ra", "audio/x-pn-realaudio");
EXTENSIONS.put("ram", "audio/x-pn-realaudio");
EXTENSIONS.put("rmi", "audio/mid");
EXTENSIONS.put("rmm", "audio/x-pn-realaudio");
EXTENSIONS.put("rmp", "audio/x-pn-realaudio");
EXTENSIONS.put("rpm", "audio/x-pn-realaudio-plugin");
EXTENSIONS.put("s3m", "audio/s3m");
EXTENSIONS.put("sid", "audio/x-psid");
EXTENSIONS.put("snd", "audio/basic");
EXTENSIONS.put("spx", "audio/ogg");
EXTENSIONS.put("tsi", "audio/tsp-audio");
EXTENSIONS.put("voc", "audio/voc");
EXTENSIONS.put("vox", "audio/voxware");
EXTENSIONS.put("vqe", "audio/x-twinvq-plugin");
EXTENSIONS.put("vqf", "audio/x-twinvq");
EXTENSIONS.put("vql", "audio/x-twinvq-plugin");
EXTENSIONS.put("wav", "audio/wav");
EXTENSIONS.put("xm", "audio/xm");
}
/**
* Adds video extensions.
*/
private static void addVideoExtensions() {
EXTENSIONS.put("afl", "video/animaflex");
EXTENSIONS.put("asf", "video/x-ms-asf");
EXTENSIONS.put("avi", "video/x-msvideo");
EXTENSIONS.put("avs", "video/avs-video");
EXTENSIONS.put("dif", "video/x-dv");
EXTENSIONS.put("divx", "video/divx");
EXTENSIONS.put("dl", "video/dl");
EXTENSIONS.put("dv", "video/x-dv");
EXTENSIONS.put("fli", "video/fli");
EXTENSIONS.put("flv", "video/x-flv");
EXTENSIONS.put("fmf", "video/x-atomic3d-feature");
EXTENSIONS.put("gl", "video/gl");
EXTENSIONS.put("isu", "video/x-isvideo");
EXTENSIONS.put("m1v", VIDEO_MPEG);
EXTENSIONS.put("m2v", VIDEO_MPEG);
EXTENSIONS.put("mjpg", "video/x-motion-jpeg");
EXTENSIONS.put("moov", "video/quicktime");
EXTENSIONS.put("mov", "video/quicktime");
EXTENSIONS.put("movie", "video/x-sgi-movie");
EXTENSIONS.put("mp4", "video/mp4");
EXTENSIONS.put("mpe", VIDEO_MPEG);
EXTENSIONS.put("mpeg", VIDEO_MPEG);
EXTENSIONS.put("mpg", VIDEO_MPEG);
EXTENSIONS.put("mv", "video/x-sgi-movie");
EXTENSIONS.put("ogv", "video/ogg");
EXTENSIONS.put("qt", "video/quicktime");
EXTENSIONS.put("qtc", "video/x-qtc");
EXTENSIONS.put("rv", "video/vndrn-realvideo");
EXTENSIONS.put("vdo", "video/vdo");
EXTENSIONS.put("viv", "video/vivo");
EXTENSIONS.put("vivo", "video/vivo");
EXTENSIONS.put("vos", "video/vosaic");
EXTENSIONS.put("xdr", "video/x-amt-demorun");
EXTENSIONS.put("xsr", "video/x-amt-showrun");
}
/**
* Adds the Microsoft Office 2007 extensions.
*/
private static void addOffice2007Extensions() {
//Office 2007 mess - http://wdg.uncc.edu/Microsoft_Office_2007_MIME_extensions_for_Apache_and_IIS"
EXTENSIONS.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
EXTENSIONS.put("docm", "application/vnd.ms-word.document.macroEnabled.12");
EXTENSIONS.put("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
EXTENSIONS.put("dotm", "application/vnd.ms-word.template.macroEnabled.12");
EXTENSIONS.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
EXTENSIONS.put("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
EXTENSIONS.put("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
EXTENSIONS.put("xltm", "application/vnd.ms-excel.template.macroEnabled.12");
EXTENSIONS.put("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
EXTENSIONS.put("xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
EXTENSIONS.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
EXTENSIONS.put("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
EXTENSIONS.put("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
EXTENSIONS.put("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
EXTENSIONS.put("potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
EXTENSIONS.put("potm", "application/vnd.ms-powerpoint.template.macroEnabled.12");
EXTENSIONS.put("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
EXTENSIONS.put("sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide");
EXTENSIONS.put("sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12");
EXTENSIONS.put("thmx", "application/vnd.ms-officetheme ");
final String onenote = "application/onenote";
EXTENSIONS.put("onetoc", onenote);
EXTENSIONS.put("onetoc2", onenote);
EXTENSIONS.put("onetmp", onenote);
EXTENSIONS.put("onepkg", onenote);
}
/**
* The lists of extension which are 'archives'.
*/
public static final Set<String> COMPRESSED_MIME; //NOSONAR
/**
* Builds the list of extension that are used by archive formats, such as zip, bz...
*/
static {
//From http://en.wikipedia.org/wiki/List_of_archive_formats
COMPRESSED_MIME = new HashSet<>();
addMimeToCompressedWithExtension("bz2");
addMimeToCompressedWithExtension("gz");
addMimeToCompressedWithExtension("gzip");
addMimeToCompressedWithExtension("lzma");
addMimeToCompressedWithExtension("z");
addMimeToCompressedWithExtension("7z");
addMimeToCompressedWithExtension("s7z");
addMimeToCompressedWithExtension("ace");
addMimeToCompressedWithExtension("alz");
addMimeToCompressedWithExtension("arc");
addMimeToCompressedWithExtension("arj");
addMimeToCompressedWithExtension("cab");
addMimeToCompressedWithExtension("cpt");
addMimeToCompressedWithExtension("dar");
addMimeToCompressedWithExtension("dmg");
addMimeToCompressedWithExtension("ice");
addMimeToCompressedWithExtension("lha");
addMimeToCompressedWithExtension("lzx");
addMimeToCompressedWithExtension("rar");
addMimeToCompressedWithExtension("sit");
addMimeToCompressedWithExtension("sitx");
addMimeToCompressedWithExtension("tar");
addMimeToCompressedWithExtension("tgz");
addMimeToCompressedWithExtension("zip");
addMimeToCompressedWithExtension("zoo");
addMimeGroups("video/", "image/", "audio/");
}
/**
* Adds a mime-type to the compressed list.
*
* @param extension the extension, without the "."
*/
private static void addMimeToCompressedWithExtension(String extension) {
String mime = EXTENSIONS.get(extension);
if (mime != null && !COMPRESSED_MIME.contains(mime)) {
COMPRESSED_MIME.add(mime);
}
}
/**
* Adds a group to the compressed list.
*
* @param groups the groups
*/
private static void addMimeGroups(String... groups) {
for (String mimeType : EXTENSIONS.values()) {
for (String group : groups) {
if (mimeType.startsWith(group) && !COMPRESSED_MIME.contains(mimeType)) {
COMPRESSED_MIME.add(mimeType);
}
}
}
}
/**
* Gets a mime-type by the extension of a file or url.
*
* @param extension the extension, without the "."
* @return the mime-type if known, {@literal null} otherwise.
*/
public static String getMimeTypeByExtension(String extension) {
return EXTENSIONS.get(extension);
}
}