From f08d779f4dab1b64dfc191b363ac62df2c2dbb39 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 11 Apr 2017 13:18:56 -0400 Subject: [PATCH] Fix file extensions for arbitrary file types. // FREEBIE --- src/Util/MIMETypeUtil.m | 1088 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 1086 insertions(+), 2 deletions(-) diff --git a/src/Util/MIMETypeUtil.m b/src/Util/MIMETypeUtil.m index 5c20191e2..5751c0075 100644 --- a/src/Util/MIMETypeUtil.m +++ b/src/Util/MIMETypeUtil.m @@ -306,7 +306,8 @@ NSString *const OWSMimeTypeUnknownForTests = @"unknown/mimetype"; } DDLogError(@"Got asked for path of file %@ which is unsupported", contentType); - return nil; + // Use a fallback file extension. + return [self filePathForData:uniqueId withFileExtension:@"bin" inFolder:folder]; } + (NSURL *)simLinkCorrectExtensionOfFile:(NSURL *)mediaURL ofMIMEType:(NSString *)contentType { @@ -389,7 +390,7 @@ NSString *const OWSMimeTypeUnknownForTests = @"unknown/mimetype"; return (__bridge_transfer NSString *)fileExtension; } -+ (NSString *)fileExtensionForMIMEType:(NSString *)mimeType ++ (NSString *)fileExtensionForMIMETypeViaUTIType:(NSString *)mimeType { NSString *utiType = [self utiTypeForMIMEType:mimeType]; if (!utiType) { @@ -452,4 +453,1087 @@ NSString *const OWSMimeTypeUnknownForTests = @"unknown/mimetype"; return result; } ++ (NSDictionary *)genericMIMETypesToExtensionTypes +{ + static NSDictionary *result = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + result = @{ + @"application/acad" : @"dwg", + @"application/andrew-inset" : @"ez", + @"application/applixware" : @"aw", + @"application/arj" : @"arj", + @"application/atom+xml" : @"atom", + @"application/atomcat+xml" : @"atomcat", + @"application/atomsvc+xml" : @"atomsvc", + @"application/binhex" : @"hqx", + @"application/binhex4" : @"hqx", + @"application/book" : @"book", + @"application/ccxml+xml" : @"ccxml", + @"application/cdf" : @"cdf", + @"application/cdmi-capability" : @"cdmia", + @"application/cdmi-container" : @"cdmic", + @"application/cdmi-domain" : @"cdmid", + @"application/cdmi-object" : @"cdmio", + @"application/cdmi-queue" : @"cdmiq", + @"application/clariscad" : @"ccad", + @"application/commonground" : @"dp", + @"application/cu-seeme" : @"cu", + @"application/davmount+xml" : @"davmount", + @"application/docbook+xml" : @"dbk", + @"application/drafting" : @"drw", + @"application/dsptype" : @"tsp", + @"application/dssc+der" : @"dssc", + @"application/dssc+xml" : @"xdssc", + @"application/dxf" : @"dxf", + @"application/ecmascript" : @"js", + @"application/emma+xml" : @"emma", + @"application/envoy" : @"evy", + @"application/epub+zip" : @"epub", + @"application/excel" : @"xls", + @"application/exi" : @"exi", + @"application/font-tdpfr" : @"pfr", + @"application/font-woff" : @"woff", + @"application/fractals" : @"fif", + @"application/freeloader" : @"frl", + @"application/futuresplash" : @"spl", + @"application/gml+xml" : @"gml", + @"application/gnutar" : @"tgz", + @"application/gpx+xml" : @"gpx", + @"application/groupwise" : @"vew", + @"application/gxf" : @"gxf", + @"application/hlp" : @"hlp", + @"application/hta" : @"hta", + @"application/hyperstudio" : @"stk", + @"application/i-deas" : @"unv", + @"application/iges" : @"iges", + @"application/inf" : @"inf", + @"application/inkml+xml" : @"ink", + @"application/internet-property-stream" : @"acx", + @"application/ipfix" : @"ipfix", + @"application/java" : @"class", + @"application/java-archive" : @"jar", + @"application/java-byte-code" : @"class", + @"application/java-serialized-object" : @"ser", + @"application/java-vm" : @"class", + @"application/javascript" : @"js", + @"application/json" : @"json", + @"application/jsonml+json" : @"jsonml", + @"application/lha" : @"lha", + @"application/lost+xml" : @"lostxml", + @"application/lzx" : @"lzx", + @"application/mac-binary" : @"bin", + @"application/mac-binhex" : @"hqx", + @"application/mac-binhex40" : @"hqx", + @"application/mac-compactpro" : @"cpt", + @"application/macbinary" : @"bin", + @"application/mads+xml" : @"mads", + @"application/marc" : @"mrc", + @"application/marcxml+xml" : @"mrcx", + @"application/mathematica" : @"ma", + @"application/mathml+xml" : @"mathml", + @"application/mbedlet" : @"mbd", + @"application/mbox" : @"mbox", + @"application/mcad" : @"mcd", + @"application/mediaservercontrol+xml" : @"mscml", + @"application/metalink+xml" : @"metalink", + @"application/metalink4+xml" : @"meta4", + @"application/mets+xml" : @"mets", + @"application/mime" : @"aps", + @"application/mods+xml" : @"mods", + @"application/mp21" : @"m21", + @"application/mp4" : @"mp4", + @"application/mspowerpoint" : @"ppt", + @"application/msword" : @"doc", + @"application/mswrite" : @"wri", + @"application/mxf" : @"mxf", + @"application/netmc" : @"mcp", + @"application/octet-stream" : @"bin", + @"application/oda" : @"oda", + @"application/oebps-package+xml" : @"opf", + @"application/ogg" : @"oga", + @"application/olescript" : @"axs", + @"application/omdoc+xml" : @"omdoc", + @"application/onenote" : @"onetoc", + @"application/oxps" : @"oxps", + @"application/patch-ops-error+xml" : @"xer", + @"application/pdf" : @"pdf", + @"application/pgp-encrypted" : @"pgp", + @"application/pgp-signature" : @"sig", + @"application/pics-rules" : @"prf", + @"application/pkcs-12" : @"p12", + @"application/pkcs-crl" : @"crl", + @"application/pkcs10" : @"p10", + @"application/pkcs7-mime" : @"p7m", + @"application/pkcs7-signature" : @"p7s", + @"application/pkcs8" : @"p8", + @"application/pkix-attr-cert" : @"ac", + @"application/pkix-cert" : @"cer", + @"application/pkix-crl" : @"crl", + @"application/pkix-pkipath" : @"pkipath", + @"application/pkixcmp" : @"pki", + @"application/plain" : @"text", + @"application/pls+xml" : @"pls", + @"application/postscript" : @"ps", + @"application/powerpoint" : @"ppt", + @"application/prs.cww" : @"cww", + @"application/pskc+xml" : @"pskcxml", + @"application/rdf+xml" : @"rdf", + @"application/reginfo+xml" : @"rif", + @"application/relax-ng-compact-syntax" : @"rnc", + @"application/resource-lists+xml" : @"rl", + @"application/resource-lists-diff+xml" : @"rld", + @"application/ringing-tones" : @"rng", + @"application/rls-services+xml" : @"rs", + @"application/rpki-ghostbusters" : @"gbr", + @"application/rpki-manifest" : @"mft", + @"application/rpki-roa" : @"roa", + @"application/rsd+xml" : @"rsd", + @"application/rss+xml" : @"rss", + @"application/rtf" : @"rtf", + @"application/sbml+xml" : @"sbml", + @"application/scvp-cv-request" : @"scq", + @"application/scvp-cv-response" : @"scs", + @"application/scvp-vp-request" : @"spq", + @"application/scvp-vp-response" : @"spp", + @"application/sdp" : @"sdp", + @"application/sea" : @"sea", + @"application/set" : @"set", + @"application/set-payment-initiation" : @"setpay", + @"application/set-registration-initiation" : @"setreg", + @"application/shf+xml" : @"shf", + @"application/sla" : @"stl", + @"application/smil" : @"smi", + @"application/smil+xml" : @"smi", + @"application/solids" : @"sol", + @"application/sounder" : @"sdr", + @"application/sparql-query" : @"rq", + @"application/sparql-results+xml" : @"srx", + @"application/srgs" : @"gram", + @"application/srgs+xml" : @"grxml", + @"application/sru+xml" : @"sru", + @"application/ssdl+xml" : @"ssdl", + @"application/ssml+xml" : @"ssml", + @"application/step" : @"step", + @"application/streamingmedia" : @"ssm", + @"application/tei+xml" : @"tei", + @"application/thraud+xml" : @"tfi", + @"application/timestamped-data" : @"tsd", + @"application/toolbook" : @"tbk", + @"application/vda" : @"vda", + @"application/vnd.3gpp.pic-bw-large" : @"plb", + @"application/vnd.3gpp.pic-bw-small" : @"psb", + @"application/vnd.3gpp.pic-bw-var" : @"pvb", + @"application/vnd.3gpp2.tcap" : @"tcap", + @"application/vnd.3m.post-it-notes" : @"pwn", + @"application/vnd.accpac.simply.aso" : @"aso", + @"application/vnd.accpac.simply.imp" : @"imp", + @"application/vnd.acucobol" : @"acu", + @"application/vnd.acucorp" : @"atc", + @"application/vnd.adobe.air-application-installer-package+zip" : @"air", + @"application/vnd.adobe.formscentral.fcdt" : @"fcdt", + @"application/vnd.adobe.fxp" : @"fxp", + @"application/vnd.adobe.xdp+xml" : @"xdp", + @"application/vnd.adobe.xfdf" : @"xfdf", + @"application/vnd.ahead.space" : @"ahead", + @"application/vnd.airzip.filesecure.azf" : @"azf", + @"application/vnd.airzip.filesecure.azs" : @"azs", + @"application/vnd.amazon.ebook" : @"azw", + @"application/vnd.americandynamics.acc" : @"acc", + @"application/vnd.amiga.ami" : @"ami", + @"application/vnd.android.package-archive" : @"apk", + @"application/vnd.anser-web-certificate-issue-initiation" : @"cii", + @"application/vnd.anser-web-funds-transfer-initiation" : @"fti", + @"application/vnd.antix.game-component" : @"atx", + @"application/vnd.apple.installer+xml" : @"mpkg", + @"application/vnd.apple.mpegurl" : @"m3u8", + @"application/vnd.aristanetworks.swi" : @"swi", + @"application/vnd.astraea-software.iota" : @"iota", + @"application/vnd.audiograph" : @"aep", + @"application/vnd.blueice.multipass" : @"mpm", + @"application/vnd.bmi" : @"bmi", + @"application/vnd.businessobjects" : @"rep", + @"application/vnd.chemdraw+xml" : @"cdxml", + @"application/vnd.chipnuts.karaoke-mmd" : @"mmd", + @"application/vnd.cinderella" : @"cdy", + @"application/vnd.claymore" : @"cla", + @"application/vnd.cloanto.rp9" : @"rp9", + @"application/vnd.clonk.c4group" : @"c4g", + @"application/vnd.cluetrust.cartomobile-config" : @"c11amc", + @"application/vnd.cluetrust.cartomobile-config-pkg" : @"c11amz", + @"application/vnd.commonspace" : @"csp", + @"application/vnd.contact.cmsg" : @"cdbcmsg", + @"application/vnd.cosmocaller" : @"cmc", + @"application/vnd.crick.clicker" : @"clkx", + @"application/vnd.crick.clicker.keyboard" : @"clkk", + @"application/vnd.crick.clicker.palette" : @"clkp", + @"application/vnd.crick.clicker.template" : @"clkt", + @"application/vnd.crick.clicker.wordbank" : @"clkw", + @"application/vnd.criticaltools.wbs+xml" : @"wbs", + @"application/vnd.ctc-posml" : @"pml", + @"application/vnd.cups-ppd" : @"ppd", + @"application/vnd.curl.car" : @"car", + @"application/vnd.curl.pcurl" : @"pcurl", + @"application/vnd.dart" : @"dart", + @"application/vnd.data-vision.rdz" : @"rdz", + @"application/vnd.dece.data" : @"uvf", + @"application/vnd.dece.ttml+xml" : @"uvt", + @"application/vnd.dece.unspecified" : @"uvx", + @"application/vnd.dece.zip" : @"uvz", + @"application/vnd.denovo.fcselayout-link" : @"fe_launch", + @"application/vnd.dna" : @"dna", + @"application/vnd.dolby.mlp" : @"mlp", + @"application/vnd.dpgraph" : @"dpg", + @"application/vnd.dreamfactory" : @"dfac", + @"application/vnd.ds-keypoint" : @"kpxx", + @"application/vnd.dvb.ait" : @"ait", + @"application/vnd.dvb.service" : @"svc", + @"application/vnd.dynageo" : @"geo", + @"application/vnd.ecowin.chart" : @"mag", + @"application/vnd.enliven" : @"nml", + @"application/vnd.epson.esf" : @"esf", + @"application/vnd.epson.msf" : @"msf", + @"application/vnd.epson.quickanime" : @"qam", + @"application/vnd.epson.salt" : @"slt", + @"application/vnd.epson.ssf" : @"ssf", + @"application/vnd.eszigno3+xml" : @"es3", + @"application/vnd.ezpix-album" : @"ez2", + @"application/vnd.ezpix-package" : @"ez3", + @"application/vnd.fdf" : @"fdf", + @"application/vnd.fdsn.mseed" : @"mseed", + @"application/vnd.fdsn.seed" : @"seed", + @"application/vnd.flographit" : @"gph", + @"application/vnd.fluxtime.clip" : @"ftc", + @"application/vnd.framemaker" : @"fm", + @"application/vnd.frogans.fnc" : @"fnc", + @"application/vnd.frogans.ltf" : @"ltf", + @"application/vnd.fsc.weblaunch" : @"fsc", + @"application/vnd.fujitsu.oasys" : @"oas", + @"application/vnd.fujitsu.oasys2" : @"oa2", + @"application/vnd.fujitsu.oasys3" : @"oa3", + @"application/vnd.fujitsu.oasysgp" : @"fg5", + @"application/vnd.fujitsu.oasysprs" : @"bh2", + @"application/vnd.fujixerox.ddd" : @"ddd", + @"application/vnd.fujixerox.docuworks" : @"xdw", + @"application/vnd.fujixerox.docuworks.binder" : @"xbd", + @"application/vnd.fuzzysheet" : @"fzs", + @"application/vnd.genomatix.tuxedo" : @"txd", + @"application/vnd.geogebra.file" : @"ggb", + @"application/vnd.geogebra.tool" : @"ggt", + @"application/vnd.geometry-explorer" : @"gex", + @"application/vnd.geonext" : @"gxt", + @"application/vnd.geoplan" : @"g2w", + @"application/vnd.geospace" : @"g3w", + @"application/vnd.gmx" : @"gmx", + @"application/vnd.google-earth.kml+xml" : @"kml", + @"application/vnd.google-earth.kmz" : @"kmz", + @"application/vnd.grafeq" : @"gqf", + @"application/vnd.groove-account" : @"gac", + @"application/vnd.groove-help" : @"ghf", + @"application/vnd.groove-identity-message" : @"gim", + @"application/vnd.groove-injector" : @"grv", + @"application/vnd.groove-tool-message" : @"gtm", + @"application/vnd.groove-tool-template" : @"tpl", + @"application/vnd.groove-vcard" : @"vcg", + @"application/vnd.hal+xml" : @"hal", + @"application/vnd.handheld-entertainment+xml" : @"zmm", + @"application/vnd.hbci" : @"hbci", + @"application/vnd.hhe.lesson-player" : @"les", + @"application/vnd.hp-hpgl" : @"hpgl", + @"application/vnd.hp-hpid" : @"hpid", + @"application/vnd.hp-hps" : @"hps", + @"application/vnd.hp-jlyt" : @"jlt", + @"application/vnd.hp-pcl" : @"pcl", + @"application/vnd.hp-pclxl" : @"pclxl", + @"application/vnd.hydrostatix.sof-data" : @"sfd-hdstx", + @"application/vnd.ibm.minipay" : @"mpy", + @"application/vnd.ibm.modcap" : @"afp", + @"application/vnd.ibm.rights-management" : @"irm", + @"application/vnd.ibm.secure-container" : @"sc", + @"application/vnd.iccprofile" : @"icc", + @"application/vnd.igloader" : @"igl", + @"application/vnd.immervision-ivp" : @"ivp", + @"application/vnd.immervision-ivu" : @"ivu", + @"application/vnd.insors.igm" : @"igm", + @"application/vnd.intercon.formnet" : @"xpw", + @"application/vnd.intergeo" : @"i2g", + @"application/vnd.intu.qbo" : @"qbo", + @"application/vnd.intu.qfx" : @"qfx", + @"application/vnd.ipunplugged.rcprofile" : @"rcprofile", + @"application/vnd.irepository.package+xml" : @"irp", + @"application/vnd.is-xpr" : @"xpr", + @"application/vnd.isac.fcs" : @"fcs", + @"application/vnd.jam" : @"jam", + @"application/vnd.jcp.javame.midlet-rms" : @"rms", + @"application/vnd.jisp" : @"jisp", + @"application/vnd.joost.joda-archive" : @"joda", + @"application/vnd.kahootz" : @"ktz", + @"application/vnd.kde.karbon" : @"karbon", + @"application/vnd.kde.kchart" : @"chrt", + @"application/vnd.kde.kformula" : @"kfo", + @"application/vnd.kde.kivio" : @"flw", + @"application/vnd.kde.kontour" : @"kon", + @"application/vnd.kde.kpresenter" : @"kpr", + @"application/vnd.kde.kspread" : @"ksp", + @"application/vnd.kde.kword" : @"kwd", + @"application/vnd.kenameaapp" : @"htke", + @"application/vnd.kidspiration" : @"kia", + @"application/vnd.kinar" : @"kne", + @"application/vnd.koan" : @"skp", + @"application/vnd.kodak-descriptor" : @"sse", + @"application/vnd.las.las+xml" : @"lasxml", + @"application/vnd.llamagraphics.life-balance.desktop" : @"lbd", + @"application/vnd.llamagraphics.life-balance.exchange+xml" : @"lbe", + @"application/vnd.lotus-1-2-3" : @"123", + @"application/vnd.lotus-approach" : @"apr", + @"application/vnd.lotus-freelance" : @"pre", + @"application/vnd.lotus-notes" : @"nsf", + @"application/vnd.lotus-organizer" : @"org", + @"application/vnd.lotus-screencam" : @"scm", + @"application/vnd.lotus-wordpro" : @"lwp", + @"application/vnd.macports.portpkg" : @"portpkg", + @"application/vnd.mcd" : @"mcd", + @"application/vnd.medcalcdata" : @"mc1", + @"application/vnd.mediastation.cdkey" : @"cdkey", + @"application/vnd.mfer" : @"mwf", + @"application/vnd.mfmp" : @"mfm", + @"application/vnd.micrografx.flo" : @"flo", + @"application/vnd.micrografx.igx" : @"igx", + @"application/vnd.mif" : @"mif", + @"application/vnd.mobius.daf" : @"daf", + @"application/vnd.mobius.dis" : @"dis", + @"application/vnd.mobius.mbk" : @"mbk", + @"application/vnd.mobius.mqy" : @"mqy", + @"application/vnd.mobius.msl" : @"msl", + @"application/vnd.mobius.plc" : @"plc", + @"application/vnd.mobius.txf" : @"txf", + @"application/vnd.mophun.application" : @"mpn", + @"application/vnd.mophun.certificate" : @"mpc", + @"application/vnd.mozilla.xul+xml" : @"xul", + @"application/vnd.ms-artgalry" : @"cil", + @"application/vnd.ms-cab-compressed" : @"cab", + @"application/vnd.ms-excel" : @"xls", + @"application/vnd.ms-excel.addin.macroenabled.12" : @"xlam", + @"application/vnd.ms-excel.sheet.binary.macroenabled.12" : @"xlsb", + @"application/vnd.ms-excel.sheet.macroenabled.12" : @"xlsm", + @"application/vnd.ms-excel.template.macroenabled.12" : @"xltm", + @"application/vnd.ms-fontobject" : @"eot", + @"application/vnd.ms-htmlhelp" : @"chm", + @"application/vnd.ms-ims" : @"ims", + @"application/vnd.ms-lrm" : @"lrm", + @"application/vnd.ms-officetheme" : @"thmx", + @"application/vnd.ms-outlook" : @"msg", + @"application/vnd.ms-pki.certstore" : @"sst", + @"application/vnd.ms-pki.pko" : @"pko", + @"application/vnd.ms-pki.seccat" : @"cat", + @"application/vnd.ms-pki.stl" : @"stl", + @"application/vnd.ms-pkicertstore" : @"sst", + @"application/vnd.ms-pkiseccat" : @"cat", + @"application/vnd.ms-pkistl" : @"stl", + @"application/vnd.ms-powerpoint" : @"ppt", + @"application/vnd.ms-powerpoint.addin.macroenabled.12" : @"ppam", + @"application/vnd.ms-powerpoint.presentation.macroenabled.12" : @"pptm", + @"application/vnd.ms-powerpoint.slide.macroenabled.12" : @"sldm", + @"application/vnd.ms-powerpoint.slideshow.macroenabled.12" : @"ppsm", + @"application/vnd.ms-powerpoint.template.macroenabled.12" : @"potm", + @"application/vnd.ms-project" : @"mpp", + @"application/vnd.ms-word.document.macroenabled.12" : @"docm", + @"application/vnd.ms-word.template.macroenabled.12" : @"dotm", + @"application/vnd.ms-works" : @"wps", + @"application/vnd.ms-wpl" : @"wpl", + @"application/vnd.ms-xpsdocument" : @"xps", + @"application/vnd.mseq" : @"mseq", + @"application/vnd.musician" : @"mus", + @"application/vnd.muvee.style" : @"msty", + @"application/vnd.mynfc" : @"taglet", + @"application/vnd.neurolanguage.nlu" : @"nlu", + @"application/vnd.nitf" : @"ntf", + @"application/vnd.noblenet-directory" : @"nnd", + @"application/vnd.noblenet-sealer" : @"nns", + @"application/vnd.noblenet-web" : @"nnw", + @"application/vnd.nokia.configuration-message" : @"ncm", + @"application/vnd.nokia.n-gage.data" : @"ngdat", + @"application/vnd.nokia.n-gage.symbian.install" : @"n-gage", + @"application/vnd.nokia.radio-preset" : @"rpst", + @"application/vnd.nokia.radio-presets" : @"rpss", + @"application/vnd.nokia.ringing-tone" : @"rng", + @"application/vnd.novadigm.edm" : @"edm", + @"application/vnd.novadigm.edx" : @"edx", + @"application/vnd.novadigm.ext" : @"ext", + @"application/vnd.oasis.opendocument.chart" : @"odc", + @"application/vnd.oasis.opendocument.chart-template" : @"otc", + @"application/vnd.oasis.opendocument.database" : @"odb", + @"application/vnd.oasis.opendocument.formula" : @"odf", + @"application/vnd.oasis.opendocument.formula-template" : @"odft", + @"application/vnd.oasis.opendocument.graphics" : @"odg", + @"application/vnd.oasis.opendocument.graphics-template" : @"otg", + @"application/vnd.oasis.opendocument.image" : @"odi", + @"application/vnd.oasis.opendocument.image-template" : @"oti", + @"application/vnd.oasis.opendocument.presentation" : @"odp", + @"application/vnd.oasis.opendocument.presentation-template" : @"otp", + @"application/vnd.oasis.opendocument.spreadsheet" : @"ods", + @"application/vnd.oasis.opendocument.spreadsheet-template" : @"ots", + @"application/vnd.oasis.opendocument.text" : @"odt", + @"application/vnd.oasis.opendocument.text-master" : @"odm", + @"application/vnd.oasis.opendocument.text-template" : @"ott", + @"application/vnd.oasis.opendocument.text-web" : @"oth", + @"application/vnd.olpc-sugar" : @"xo", + @"application/vnd.oma.dd2+xml" : @"dd2", + @"application/vnd.openofficeorg.extension" : @"oxt", + @"application/vnd.openxmlformats-officedocument.presentationml.presentation" : @"pptx", + @"application/vnd.openxmlformats-officedocument.presentationml.slide" : @"sldx", + @"application/vnd.openxmlformats-officedocument.presentationml.slideshow" : @"ppsx", + @"application/vnd.openxmlformats-officedocument.presentationml.template" : @"potx", + @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : @"xlsx", + @"application/vnd.openxmlformats-officedocument.spreadsheetml.template" : @"xltx", + @"application/vnd.openxmlformats-officedocument.wordprocessingml.document" : @"docx", + @"application/vnd.openxmlformats-officedocument.wordprocessingml.template" : @"dotx", + @"application/vnd.osgeo.mapguide.package" : @"mgp", + @"application/vnd.osgi.dp" : @"dp", + @"application/vnd.osgi.subsystem" : @"esa", + @"application/vnd.palm" : @"pdb", + @"application/vnd.pawaafile" : @"paw", + @"application/vnd.pg.format" : @"str", + @"application/vnd.pg.osasli" : @"ei6", + @"application/vnd.picsel" : @"efif", + @"application/vnd.pmi.widget" : @"wg", + @"application/vnd.pocketlearn" : @"plf", + @"application/vnd.powerbuilder6" : @"pbd", + @"application/vnd.previewsystems.box" : @"box", + @"application/vnd.proteus.magazine" : @"mgz", + @"application/vnd.publishare-delta-tree" : @"qps", + @"application/vnd.pvi.ptid1" : @"ptid", + @"application/vnd.quark.quarkxpress" : @"qxd", + @"application/vnd.realvnc.bed" : @"bed", + @"application/vnd.recordare.musicxml" : @"mxl", + @"application/vnd.recordare.musicxml+xml" : @"musicxml", + @"application/vnd.rig.cryptonote" : @"cryptonote", + @"application/vnd.rim.cod" : @"cod", + @"application/vnd.rn-realmedia" : @"rm", + @"application/vnd.rn-realmedia-vbr" : @"rmvb", + @"application/vnd.rn-realplayer" : @"rnx", + @"application/vnd.route66.link66+xml" : @"link66", + @"application/vnd.sailingtracker.track" : @"st", + @"application/vnd.seemail" : @"see", + @"application/vnd.sema" : @"sema", + @"application/vnd.semd" : @"semd", + @"application/vnd.semf" : @"semf", + @"application/vnd.shana.informed.formdata" : @"ifm", + @"application/vnd.shana.informed.formtemplate" : @"itp", + @"application/vnd.shana.informed.interchange" : @"iif", + @"application/vnd.shana.informed.package" : @"ipk", + @"application/vnd.simtech-mindmapper" : @"twd", + @"application/vnd.smaf" : @"mmf", + @"application/vnd.smart.teacher" : @"teacher", + @"application/vnd.solent.sdkm+xml" : @"sdkm", + @"application/vnd.spotfire.dxp" : @"dxp", + @"application/vnd.spotfire.sfs" : @"sfs", + @"application/vnd.stardivision.calc" : @"sdc", + @"application/vnd.stardivision.draw" : @"sda", + @"application/vnd.stardivision.impress" : @"sdd", + @"application/vnd.stardivision.math" : @"smf", + @"application/vnd.stardivision.writer" : @"sdw", + @"application/vnd.stardivision.writer-global" : @"sgl", + @"application/vnd.stepmania.package" : @"smzip", + @"application/vnd.stepmania.stepchart" : @"sm", + @"application/vnd.sun.xml.calc" : @"sxc", + @"application/vnd.sun.xml.calc.template" : @"stc", + @"application/vnd.sun.xml.draw" : @"sxd", + @"application/vnd.sun.xml.draw.template" : @"std", + @"application/vnd.sun.xml.impress" : @"sxi", + @"application/vnd.sun.xml.impress.template" : @"sti", + @"application/vnd.sun.xml.math" : @"sxm", + @"application/vnd.sun.xml.writer" : @"sxw", + @"application/vnd.sun.xml.writer.global" : @"sxg", + @"application/vnd.sun.xml.writer.template" : @"stw", + @"application/vnd.sus-calendar" : @"sus", + @"application/vnd.svd" : @"svd", + @"application/vnd.symbian.install" : @"sis", + @"application/vnd.syncml+xml" : @"xsm", + @"application/vnd.syncml.dm+wbxml" : @"bdm", + @"application/vnd.syncml.dm+xml" : @"xdm", + @"application/vnd.tao.intent-module-archive" : @"tao", + @"application/vnd.tcpdump.pcap" : @"pcap", + @"application/vnd.tmobile-livetv" : @"tmo", + @"application/vnd.trid.tpt" : @"tpt", + @"application/vnd.triscape.mxs" : @"mxs", + @"application/vnd.trueapp" : @"tra", + @"application/vnd.ufdl" : @"ufd", + @"application/vnd.uiq.theme" : @"utz", + @"application/vnd.umajin" : @"umj", + @"application/vnd.unity" : @"unityweb", + @"application/vnd.uoml+xml" : @"uoml", + @"application/vnd.vcx" : @"vcx", + @"application/vnd.visio" : @"vsd", + @"application/vnd.visio2013" : @"vsdx", + @"application/vnd.visionary" : @"vis", + @"application/vnd.vsf" : @"vsf", + @"application/vnd.wap.wbxml" : @"wbxml", + @"application/vnd.wap.wmlc" : @"wmlc", + @"application/vnd.wap.wmlscriptc" : @"wmlsc", + @"application/vnd.webturbo" : @"wtb", + @"application/vnd.wolfram.player" : @"nbp", + @"application/vnd.wordperfect" : @"wpd", + @"application/vnd.wqd" : @"wqd", + @"application/vnd.wt.stf" : @"stf", + @"application/vnd.xara" : @"xar", + @"application/vnd.xfdl" : @"xfdl", + @"application/vnd.yamaha.hv-dic" : @"hvd", + @"application/vnd.yamaha.hv-script" : @"hvs", + @"application/vnd.yamaha.hv-voice" : @"hvp", + @"application/vnd.yamaha.openscoreformat" : @"osf", + @"application/vnd.yamaha.openscoreformat.osfpvg+xml" : @"osfpvg", + @"application/vnd.yamaha.smaf-audio" : @"saf", + @"application/vnd.yamaha.smaf-phrase" : @"spf", + @"application/vnd.yellowriver-custom-menu" : @"cmp", + @"application/vnd.zul" : @"zir", + @"application/vnd.zzazz.deck+xml" : @"zaz", + @"application/vocaltec-media-desc" : @"vmd", + @"application/vocaltec-media-file" : @"vmf", + @"application/voicexml+xml" : @"vxml", + @"application/widget" : @"wgt", + @"application/winhlp" : @"hlp", + @"application/wordperfect" : @"wp", + @"application/wordperfect6.0" : @"w60", + @"application/wordperfect6.1" : @"w61", + @"application/wsdl+xml" : @"wsdl", + @"application/wspolicy+xml" : @"wspolicy", + @"application/x-123" : @"wk1", + @"application/x-7z-compressed" : @"7z", + @"application/x-abiword" : @"abw", + @"application/x-ace-compressed" : @"ace", + @"application/x-aim" : @"aim", + @"application/x-apple-diskimage" : @"dmg", + @"application/x-authorware-bin" : @"aab", + @"application/x-authorware-map" : @"aam", + @"application/x-authorware-seg" : @"aas", + @"application/x-bcpio" : @"bcpio", + @"application/x-binary" : @"bin", + @"application/x-binhex40" : @"hqx", + @"application/x-bittorrent" : @"torrent", + @"application/x-blorb" : @"blb", + @"application/x-bsh" : @"sh", + @"application/x-bytecode.elisp" : @"elc", + @"application/x-bytecode.python" : @"pyc", + @"application/x-bzip" : @"bz", + @"application/x-bzip2" : @"bz2", + @"application/x-cbr" : @"cbr", + @"application/x-cdf" : @"cdf", + @"application/x-cdlink" : @"vcd", + @"application/x-cfs-compressed" : @"cfs", + @"application/x-chat" : @"chat", + @"application/x-chess-pgn" : @"pgn", + @"application/x-cmu-raster" : @"ras", + @"application/x-cocoa" : @"cco", + @"application/x-compactpro" : @"cpt", + @"application/x-compress" : @"z", + @"application/x-conference" : @"nsc", + @"application/x-cpio" : @"cpio", + @"application/x-cpt" : @"cpt", + @"application/x-csh" : @"csh", + @"application/x-debian-package" : @"deb", + @"application/x-deepv" : @"deepv", + @"application/x-dgc-compressed" : @"dgc", + @"application/x-director" : @"dir", + @"application/x-doom" : @"wad", + @"application/x-dtbncx+xml" : @"ncx", + @"application/x-dtbook+xml" : @"dtb", + @"application/x-dtbresource+xml" : @"res", + @"application/x-dvi" : @"dvi", + @"application/x-elc" : @"elc", + @"application/x-envoy" : @"evy", + @"application/x-esrehber" : @"es", + @"application/x-eva" : @"eva", + @"application/x-excel" : @"xls", + @"application/x-font-bdf" : @"bdf", + @"application/x-font-ghostscript" : @"gsf", + @"application/x-font-linux-psf" : @"psf", + @"application/x-font-otf" : @"otf", + @"application/x-font-pcf" : @"pcf", + @"application/x-font-snf" : @"snf", + @"application/x-font-ttf" : @"ttf", + @"application/x-font-type1" : @"pfa", + @"application/x-font-woff" : @"woff", + @"application/x-frame" : @"mif", + @"application/x-freearc" : @"arc", + @"application/x-freelance" : @"pre", + @"application/x-futuresplash" : @"spl", + @"application/x-gca-compressed" : @"gca", + @"application/x-glulx" : @"ulx", + @"application/x-gnumeric" : @"gnumeric", + @"application/x-gramps-xml" : @"gramps", + @"application/x-gsp" : @"gsp", + @"application/x-gss" : @"gss", + @"application/x-gtar" : @"gtar", + @"application/x-gzip" : @"gz", + @"application/x-hdf" : @"hdf", + @"application/x-httpd-imap" : @"imap", + @"application/x-ima" : @"ima", + @"application/x-install-instructions" : @"install", + @"application/x-internett-signup" : @"ins", + @"application/x-inventor" : @"iv", + @"application/x-ip2" : @"ip", + @"application/x-iphone" : @"iii", + @"application/x-iso9660-image" : @"iso", + @"application/x-java-class" : @"class", + @"application/x-java-commerce" : @"jcm", + @"application/x-java-jnlp-file" : @"jnlp", + @"application/x-javascript" : @"js", + @"application/x-ksh" : @"ksh", + @"application/x-latex" : @"ltx", + @"application/x-lha" : @"lha", + @"application/x-lisp" : @"lsp", + @"application/x-livescreen" : @"ivy", + @"application/x-lotus" : @"wq1", + @"application/x-lotusscreencam" : @"scm", + @"application/x-lzh" : @"lzh", + @"application/x-lzh-compressed" : @"lzh", + @"application/x-lzx" : @"lzx", + @"application/x-mac-binhex40" : @"hqx", + @"application/x-macbinary" : @"bin", + @"application/x-magic-cap-package-1.0" : @"mc$", + @"application/x-mathcad" : @"mcd", + @"application/x-meme" : @"mm", + @"application/x-midi" : @"midi", + @"application/x-mie" : @"mie", + @"application/x-mif" : @"mif", + @"application/x-mix-transfer" : @"nix", + @"application/x-mobipocket-ebook" : @"prc", + @"application/x-mplayer2" : @"asx", + @"application/x-ms-application" : @"application", + @"application/x-ms-shortcut" : @"lnk", + @"application/x-ms-wmd" : @"wmd", + @"application/x-ms-wmz" : @"wmz", + @"application/x-ms-xbap" : @"xbap", + @"application/x-msaccess" : @"mdb", + @"application/x-msbinder" : @"obd", + @"application/x-mscardfile" : @"crd", + @"application/x-msclip" : @"clp", + @"application/x-msdownload" : @"exe", + @"application/x-msexcel" : @"xls", + @"application/x-msmediaview" : @"mvb", + @"application/x-msmetafile" : @"wmf", + @"application/x-msmoney" : @"mny", + @"application/x-mspowerpoint" : @"ppt", + @"application/x-mspublisher" : @"pub", + @"application/x-msschedule" : @"scd", + @"application/x-msterminal" : @"trm", + @"application/x-mswrite" : @"wri", + @"application/x-navi-animation" : @"ani", + @"application/x-navidoc" : @"nvd", + @"application/x-navimap" : @"map", + @"application/x-navistyle" : @"stl", + @"application/x-netcdf" : @"nc", + @"application/x-newton-compatible-pkg" : @"pkg", + @"application/x-nokia-9000-communicator-add-on-software" : @"aos", + @"application/x-nzb" : @"nzb", + @"application/x-omc" : @"omc", + @"application/x-omcdatamaker" : @"omcd", + @"application/x-omcregerator" : @"omcr", + @"application/x-pcl" : @"pcl", + @"application/x-pixclscript" : @"plx", + @"application/x-pkcs10" : @"p10", + @"application/x-pkcs12" : @"p12", + @"application/x-pkcs7-certificates" : @"p7b", + @"application/x-pkcs7-certreqresp" : @"p7r", + @"application/x-pkcs7-mime" : @"p7m", + @"application/x-pkcs7-signature" : @"p7s", + @"application/x-pointplus" : @"css", + @"application/x-portable-anymap" : @"pnm", + @"application/x-qpro" : @"wb1", + @"application/x-rar-compressed" : @"rar", + @"application/x-research-info-systems" : @"ris", + @"application/x-rtf" : @"rtf", + @"application/x-sdp" : @"sdp", + @"application/x-sea" : @"sea", + @"application/x-seelogo" : @"sl", + @"application/x-sh" : @"sh", + @"application/x-shar" : @"shar", + @"application/x-shockwave-flash" : @"swf", + @"application/x-silverlight-app" : @"xap", + @"application/x-sit" : @"sit", + @"application/x-sprite" : @"spr", + @"application/x-sql" : @"sql", + @"application/x-stuffit" : @"sit", + @"application/x-stuffitx" : @"sitx", + @"application/x-subrip" : @"srt", + @"application/x-sv4cpio" : @"sv4cpio", + @"application/x-sv4crc" : @"sv4crc", + @"application/x-t3vm-image" : @"t3", + @"application/x-tads" : @"gam", + @"application/x-tar" : @"tar", + @"application/x-tbook" : @"tbk", + @"application/x-tcl" : @"tcl", + @"application/x-tex" : @"tex", + @"application/x-tex-tfm" : @"tfm", + @"application/x-texinfo" : @"texinfo", + @"application/x-tgif" : @"obj", + @"application/x-troff-man" : @"man", + @"application/x-troff-me" : @"me", + @"application/x-troff-ms" : @"ms", + @"application/x-troff-msvideo" : @"avi", + @"application/x-ustar" : @"ustar", + @"application/x-visio" : @"vsd", + @"application/x-vnd.audioexplosion.mzz" : @"mzz", + @"application/x-vnd.ls-xpix" : @"xpix", + @"application/x-vrml" : @"vrml", + @"application/x-wais-source" : @"src", + @"application/x-winhelp" : @"hlp", + @"application/x-wintalk" : @"wtk", + @"application/x-wpwin" : @"wpd", + @"application/x-wri" : @"wri", + @"application/x-x509-ca-cert" : @"crt", + @"application/x-x509-user-cert" : @"crt", + @"application/x-xfig" : @"fig", + @"application/x-xliff+xml" : @"xlf", + @"application/x-xpinstall" : @"xpi", + @"application/x-xz" : @"xz", + @"application/x-zip-compressed" : @"zip", + @"application/x-zmachine" : @"z1", + @"application/xaml+xml" : @"xaml", + @"application/xcap-diff+xml" : @"xdf", + @"application/xenc+xml" : @"xenc", + @"application/xhtml+xml" : @"xhtml", + @"application/xml" : @"xml", + @"application/xml-dtd" : @"dtd", + @"application/xop+xml" : @"xop", + @"application/xproc+xml" : @"xpl", + @"application/xslt+xml" : @"xslt", + @"application/xspf+xml" : @"xspf", + @"application/xv+xml" : @"mxml", + @"application/yang" : @"yang", + @"application/yin+xml" : @"yin", + @"application/ynd.ms-pkipko" : @"pko", + @"application/zip" : @"zip", + @"audio/aac" : @"aac", + @"audio/adpcm" : @"adp", + @"audio/aiff" : @"aiff", + @"audio/basic" : @"au", + @"audio/it" : @"it", + @"audio/mid" : @"rmi", + @"audio/midi" : @"midi", + @"audio/mod" : @"mod", + @"audio/mp4" : @"m4a", + @"audio/mpeg" : @"mpg", + @"audio/mpeg3" : @"mp3", + @"audio/ogg" : @"oga", + @"audio/s3m" : @"s3m", + @"audio/silk" : @"sil", + @"audio/tsp-audio" : @"tsi", + @"audio/tsplayer" : @"tsp", + @"audio/vnd.dece.audio" : @"uva", + @"audio/vnd.digital-winds" : @"eol", + @"audio/vnd.dra" : @"dra", + @"audio/vnd.dts" : @"dts", + @"audio/vnd.dts.hd" : @"dtshd", + @"audio/vnd.lucent.voice" : @"lvp", + @"audio/vnd.ms-playready.media.pya" : @"pya", + @"audio/vnd.nuera.ecelp4800" : @"ecelp4800", + @"audio/vnd.nuera.ecelp7470" : @"ecelp7470", + @"audio/vnd.nuera.ecelp9600" : @"ecelp9600", + @"audio/vnd.qcelp" : @"qcp", + @"audio/vnd.rip" : @"rip", + @"audio/voc" : @"voc", + @"audio/voxware" : @"vox", + @"audio/wav" : @"wav", + @"audio/webm" : @"weba", + @"audio/x-aac" : @"aac", + @"audio/x-adpcm" : @"snd", + @"audio/x-aiff" : @"aiff", + @"audio/x-au" : @"au", + @"audio/x-caf" : @"caf", + @"audio/x-flac" : @"flac", + @"audio/x-gsm" : @"gsm", + @"audio/x-jam" : @"jam", + @"audio/x-liveaudio" : @"lam", + @"audio/x-matroska" : @"mka", + @"audio/x-mid" : @"midi", + @"audio/x-midi" : @"midi", + @"audio/x-mod" : @"mod", + @"audio/x-mpeg" : @"mp2", + @"audio/x-mpeg-3" : @"mp3", + @"audio/x-mpegurl" : @"m3u", + @"audio/x-mpequrl" : @"m3u", + @"audio/x-ms-wax" : @"wax", + @"audio/x-ms-wma" : @"wma", + @"audio/x-pn-realaudio" : @"ram", + @"audio/x-pn-realaudio-plugin" : @"rmp", + @"audio/x-psid" : @"sid", + @"audio/x-realaudio" : @"ra", + @"audio/x-twinvq" : @"vqf", + @"audio/x-vnd.audioexplosion.mjuicemediafile" : @"mjf", + @"audio/x-voc" : @"voc", + @"audio/x-wav" : @"wav", + @"audio/xm" : @"xm", + @"chemical/x-cdx" : @"cdx", + @"chemical/x-cif" : @"cif", + @"chemical/x-cmdf" : @"cmdf", + @"chemical/x-cml" : @"cml", + @"chemical/x-csml" : @"csml", + @"chemical/x-pdb" : @"pdb", + @"chemical/x-xyz" : @"xyz", + @"drawing/x-dwf" : @"dwf", + @"font/ttf" : @"ttf", + @"font/woff" : @"woff", + @"font/woff2" : @"woff2", + @"i-world/i-vrml" : @"ivr", + @"image/bmp" : @"bmp", + @"image/cgm" : @"cgm", + @"image/cis-cod" : @"cod", + @"image/fif" : @"fif", + @"image/g3fax" : @"g3", + @"image/gif" : @"gif", + @"image/ief" : @"ief", + @"image/jpeg" : @"jpg", + @"image/jutvision" : @"jut", + @"image/ktx" : @"ktx", + @"image/pict" : @"pict", + @"image/pjpeg" : @"jpg", + @"image/png" : @"png", + @"image/prs.btif" : @"btif", + @"image/sgi" : @"sgi", + @"image/svg+xml" : @"svg", + @"image/tiff" : @"tiff", + @"image/vasa" : @"mcf", + @"image/vnd.adobe.photoshop" : @"psd", + @"image/vnd.dece.graphic" : @"uvi", + @"image/vnd.djvu" : @"djvu", + @"image/vnd.dvb.subtitle" : @"sub", + @"image/vnd.dwg" : @"dwg", + @"image/vnd.dxf" : @"dxf", + @"image/vnd.fastbidsheet" : @"fbs", + @"image/vnd.fpx" : @"fpx", + @"image/vnd.fst" : @"fst", + @"image/vnd.fujixerox.edmics-mmr" : @"mmr", + @"image/vnd.fujixerox.edmics-rlc" : @"rlc", + @"image/vnd.ms-modi" : @"mdi", + @"image/vnd.ms-photo" : @"wdp", + @"image/vnd.net-fpx" : @"fpx", + @"image/vnd.rn-realflash" : @"rf", + @"image/vnd.rn-realpix" : @"rp", + @"image/vnd.wap.wbmp" : @"wbmp", + @"image/vnd.xiff" : @"xif", + @"image/webp" : @"webp", + @"image/x-3ds" : @"3ds", + @"image/x-citrix-jpeg" : @"jpg", + @"image/x-citrix-png" : @"png", + @"image/x-cmu-raster" : @"ras", + @"image/x-cmx" : @"cmx", + @"image/x-dwg" : @"dwg", + @"image/x-freehand" : @"fh", + @"image/x-icon" : @"ico", + @"image/x-jg" : @"art", + @"image/x-jps" : @"jps", + @"image/x-mrsid-image" : @"sid", + @"image/x-niff" : @"niff", + @"image/x-pcx" : @"pcx", + @"image/x-pict" : @"pic", + @"image/x-png" : @"png", + @"image/x-portable-anymap" : @"pnm", + @"image/x-portable-bitmap" : @"pbm", + @"image/x-portable-graymap" : @"pgm", + @"image/x-portable-greymap" : @"pgm", + @"image/x-portable-pixmap" : @"ppm", + @"image/x-rgb" : @"rgb", + @"image/x-tga" : @"tga", + @"image/x-tiff" : @"tiff", + @"image/x-windows-bmp" : @"bmp", + @"image/x-xbitmap" : @"xbm", + @"image/x-xbm" : @"xbm", + @"image/x-xpixmap" : @"xpm", + @"image/x-xwd" : @"xwd", + @"image/x-xwindowdump" : @"xwd", + @"image/xbm" : @"xbm", + @"image/xpm" : @"xpm", + @"message/rfc822" : @"eml", + @"model/iges" : @"iges", + @"model/mesh" : @"msh", + @"model/vnd.collada+xml" : @"dae", + @"model/vnd.dwf" : @"dwf", + @"model/vnd.gdl" : @"gdl", + @"model/vnd.gtw" : @"gtw", + @"model/vnd.mts" : @"mts", + @"model/vnd.vtu" : @"vtu", + @"model/vrml" : @"vrml", + @"model/x-pov" : @"pov", + @"model/x3d+binary" : @"x3db", + @"model/x3d+vrml" : @"x3dv", + @"model/x3d+xml" : @"x3d", + @"multipart/x-gzip" : @"gzip", + @"multipart/x-ustar" : @"ustar", + @"multipart/x-zip" : @"zip", + @"music/x-karaoke" : @"kar", + @"paleovu/x-pv" : @"pvu", + @"text/asp" : @"asp", + @"text/cache-manifest" : @"appcache", + @"text/calendar" : @"ics", + @"text/css" : @"css", + @"text/csv" : @"csv", + @"text/ecmascript" : @"js", + @"text/h323" : @"323", + @"text/html" : @"html", + @"text/iuls" : @"uls", + @"text/java" : @"java", + @"text/javascript" : @"js", + @"text/mcf" : @"mcf", + @"text/n3" : @"n3", + @"text/pascal" : @"pas", + @"text/plain" : @"txt", + @"text/plain-bas" : @"par", + @"text/prs.lines.tag" : @"dsc", + @"text/richtext" : @"rtf", + @"text/scriplet" : @"wsc", + @"text/scriptlet" : @"sct", + @"text/sgml" : @"sgml", + @"text/tab-separated-values" : @"tsv", + @"text/troff" : @"t", + @"text/turtle" : @"ttl", + @"text/uri-list" : @"uri", + @"text/vcard" : @"vcard", + @"text/vnd.abc" : @"abc", + @"text/vnd.curl" : @"curl", + @"text/vnd.curl.dcurl" : @"dcurl", + @"text/vnd.curl.mcurl" : @"mcurl", + @"text/vnd.curl.scurl" : @"scurl", + @"text/vnd.dvb.subtitle" : @"sub", + @"text/vnd.fly" : @"fly", + @"text/vnd.fmi.flexstor" : @"flx", + @"text/vnd.graphviz" : @"gv", + @"text/vnd.in3d.3dml" : @"3dml", + @"text/vnd.in3d.spot" : @"spot", + @"text/vnd.rn-realtext" : @"rt", + @"text/vnd.sun.j2me.app-descriptor" : @"jad", + @"text/vnd.wap.wml" : @"wml", + @"text/vnd.wap.wmlscript" : @"wmls", + @"text/webviewhtml" : @"htt", + @"text/x-asm" : @"asm", + @"text/x-audiosoft-intra" : @"aip", + @"text/x-c" : @"c", + @"text/x-component" : @"htc", + @"text/x-fortran" : @"f", + @"text/x-h" : @"h", + @"text/x-java-source" : @"java", + @"text/x-la-asf" : @"lsx", + @"text/x-m" : @"m", + @"text/x-nfo" : @"nfo", + @"text/x-opml" : @"opml", + @"text/x-pascal" : @"p", + @"text/x-script" : @"hlb", + @"text/x-script.csh" : @"csh", + @"text/x-script.elisp" : @"el", + @"text/x-script.guile" : @"scm", + @"text/x-script.ksh" : @"ksh", + @"text/x-script.lisp" : @"lsp", + @"text/x-script.perl" : @"pl", + @"text/x-script.perl-module" : @"pm", + @"text/x-script.phyton" : @"py", + @"text/x-script.rexx" : @"rexx", + @"text/x-script.scheme" : @"scm", + @"text/x-script.sh" : @"sh", + @"text/x-script.tcl" : @"tcl", + @"text/x-script.tcsh" : @"tcsh", + @"text/x-script.zsh" : @"zsh", + @"text/x-setext" : @"etx", + @"text/x-sfv" : @"sfv", + @"text/x-sgml" : @"sgml", + @"text/x-uil" : @"uil", + @"text/x-uuencode" : @"uu", + @"text/x-vcalendar" : @"vcs", + @"text/x-vcard" : @"vcf", + @"text/xml" : @"xml", + @"text/yaml" : @"yaml", + @"video/3gpp" : @"3gp", + @"video/3gpp2" : @"3g2", + @"video/animaflex" : @"afl", + @"video/avi" : @"avi", + @"video/avs-video" : @"avs", + @"video/dl" : @"dl", + @"video/fli" : @"fli", + @"video/gl" : @"gl", + @"video/h261" : @"h261", + @"video/h263" : @"h263", + @"video/h264" : @"h264", + @"video/jpeg" : @"jpgv", + @"video/jpm" : @"jpm", + @"video/mj2" : @"mj2", + @"video/mp4" : @"mp4", + @"video/mpeg" : @"mpg", + @"video/msvideo" : @"avi", + @"video/ogg" : @"ogv", + @"video/quicktime" : @"mov", + @"video/vdo" : @"vdo", + @"video/vnd.dece.hd" : @"uvh", + @"video/vnd.dece.mobile" : @"uvm", + @"video/vnd.dece.pd" : @"uvp", + @"video/vnd.dece.sd" : @"uvs", + @"video/vnd.dece.video" : @"uvv", + @"video/vnd.dvb.file" : @"dvb", + @"video/vnd.fvt" : @"fvt", + @"video/vnd.mpegurl" : @"mxu", + @"video/vnd.ms-playready.media.pyv" : @"pyv", + @"video/vnd.rn-realvideo" : @"rv", + @"video/vnd.uvvu.mp4" : @"uvu", + @"video/vnd.vivo" : @"viv", + @"video/vosaic" : @"vos", + @"video/webm" : @"webm", + @"video/x-amt-demorun" : @"xdr", + @"video/x-amt-showrun" : @"xsr", + @"video/x-atomic3d-feature" : @"fmf", + @"video/x-dl" : @"dl", + @"video/x-dv" : @"dv", + @"video/x-f4v" : @"f4v", + @"video/x-fli" : @"fli", + @"video/x-flv" : @"flv", + @"video/x-gl" : @"gl", + @"video/x-isvideo" : @"isu", + @"video/x-la-asf" : @"lsf", + @"video/x-m4v" : @"m4v", + @"video/x-matroska" : @"mkv", + @"video/x-mng" : @"mng", + @"video/x-motion-jpeg" : @"mjpg", + @"video/x-mpeg" : @"mpg", + @"video/x-mpeq2a" : @"mp2", + @"video/x-ms-asf" : @"asf", + @"video/x-ms-asf-plugin" : @"asx", + @"video/x-ms-vob" : @"vob", + @"video/x-ms-wm" : @"wm", + @"video/x-ms-wmv" : @"wmv", + @"video/x-ms-wmx" : @"wmx", + @"video/x-ms-wvx" : @"wvx", + @"video/x-msvideo" : @"avi", + @"video/x-qtc" : @"qtc", + @"video/x-scm" : @"scm", + @"video/x-sgi-movie" : @"movie", + @"video/x-smv" : @"smv", + @"windows/metafile" : @"wmf", + @"www/mime" : @"mime", + @"x-conference/x-cooltalk" : @"ice", + @"x-music/x-midi" : @"midi", + @"x-world/x-3dmf" : @"3dmf", + @"x-world/x-svr" : @"svr", + @"x-world/x-vrml" : @"vrml", + @"x-world/x-vrt" : @"vrt", + @"xgl/drawing" : @"xgz", + @"xgl/movie" : @"xmz", + }; + }); + return result; +} + ++ (NSString *)fileExtensionForMIMETypeViaLookup:(NSString *)mimeType +{ + return [[self genericMIMETypesToExtensionTypes] objectForKey:mimeType]; +} + ++ (NSString *)fileExtensionForMIMEType:(NSString *)mimeType +{ + // Try to deduce the file extension by converting to a UTI type. + NSString *fileExtension = [self fileExtensionForMIMETypeViaUTIType:mimeType]; + if (!fileExtension) { + // Try to deduce the file extension by using a lookup table.. + fileExtension = [self fileExtensionForMIMETypeViaLookup:mimeType]; + } + return fileExtension; +} + @end