Merge pull request #1266 from esdrubal/datetimenewformat
[mono.git] / mcs / class / System.Web / System.Web / MimeTypes.cs
1 //
2 // System.Web.MimeTypes
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //
7 // (C) 2002 Ximian, Inc (http://www.ximian.com)
8 // (C) 2003-2009 Novell, Inc (http://novell.com)
9
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30
31 using System;
32 using System.Collections;
33 using System.Collections.Generic;
34
35 namespace System.Web
36 {
37         sealed class MimeTypes
38         {
39                 static Dictionary <string, string> mimeTypes;
40                 
41                 static MimeTypes ()
42                 {
43                         mimeTypes = new Dictionary <string, string> (StringComparer.OrdinalIgnoreCase);
44                         mimeTypes.Add ("323", "text/h323");
45                         mimeTypes.Add ("3dmf", "x-world/x-3dmf");
46                         mimeTypes.Add ("3dm", "x-world/x-3dmf");
47                         mimeTypes.Add ("3g2", "video/3gpp2");
48                         mimeTypes.Add ("3gp", "video/3gpp");
49                         mimeTypes.Add ("7z", "application/x-7z-compressed");
50                         mimeTypes.Add ("aab", "application/x-authorware-bin");
51                         mimeTypes.Add ("aac", "audio/aac");
52                         mimeTypes.Add ("aam", "application/x-authorware-map");
53                         mimeTypes.Add ("aas", "application/x-authorware-seg");
54                         mimeTypes.Add ("abc", "text/vnd.abc");
55                         mimeTypes.Add ("acgi", "text/html");
56                         mimeTypes.Add ("acx", "application/internet-property-stream");
57                         mimeTypes.Add ("afl", "video/animaflex");
58                         mimeTypes.Add ("ai", "application/postscript");
59                         mimeTypes.Add ("aif", "audio/aiff");
60                         mimeTypes.Add ("aifc", "audio/aiff");
61                         mimeTypes.Add ("aiff", "audio/aiff");
62                         mimeTypes.Add ("aim", "application/x-aim");
63                         mimeTypes.Add ("aip", "text/x-audiosoft-intra");
64                         mimeTypes.Add ("ani", "application/x-navi-animation");
65                         mimeTypes.Add ("aos", "application/x-nokia-9000-communicator-add-on-software");
66                         mimeTypes.Add ("appcache", "text/cache-manifest");
67                         mimeTypes.Add ("application", "application/x-ms-application");
68                         mimeTypes.Add ("aps", "application/mime");
69                         mimeTypes.Add ("art", "image/x-jg");
70                         mimeTypes.Add ("asf", "video/x-ms-asf");
71                         mimeTypes.Add ("asm", "text/x-asm");
72                         mimeTypes.Add ("asp", "text/asp");
73                         mimeTypes.Add ("asr", "video/x-ms-asf");
74                         mimeTypes.Add ("asx", "application/x-mplayer2");
75                         mimeTypes.Add ("atom", "application/atom+xml");
76                         mimeTypes.Add ("au", "audio/x-au");
77                         mimeTypes.Add ("avi", "video/avi");
78                         mimeTypes.Add ("avs", "video/avs-video");
79                         mimeTypes.Add ("axs", "application/olescript");
80                         mimeTypes.Add ("bas", "text/plain");
81                         mimeTypes.Add ("bcpio", "application/x-bcpio");
82                         mimeTypes.Add ("bin", "application/octet-stream");
83                         mimeTypes.Add ("bm", "image/bmp");
84                         mimeTypes.Add ("bmp", "image/bmp");
85                         mimeTypes.Add ("boo", "application/book");
86                         mimeTypes.Add ("book", "application/book");
87                         mimeTypes.Add ("boz", "application/x-bzip2");
88                         mimeTypes.Add ("bsh", "application/x-bsh");
89                         mimeTypes.Add ("bz2", "application/x-bzip2");
90                         mimeTypes.Add ("bz", "application/x-bzip");
91                         mimeTypes.Add ("cat", "application/vnd.ms-pki.seccat");
92                         mimeTypes.Add ("ccad", "application/clariscad");
93                         mimeTypes.Add ("cco", "application/x-cocoa");
94                         mimeTypes.Add ("cc", "text/plain");
95                         mimeTypes.Add ("cdf", "application/cdf");
96                         mimeTypes.Add ("cer", "application/pkix-cert");
97                         mimeTypes.Add ("cha", "application/x-chat");
98                         mimeTypes.Add ("chat", "application/x-chat");
99                         mimeTypes.Add ("class", "application/x-java-applet");
100                         mimeTypes.Add ("clp", "application/x-msclip");
101                         mimeTypes.Add ("cmx", "image/x-cmx");
102                         mimeTypes.Add ("cod", "image/cis-cod");
103                         mimeTypes.Add ("coffee", "text/x-coffeescript");
104                         mimeTypes.Add ("conf", "text/plain");
105                         mimeTypes.Add ("cpio", "application/x-cpio");
106                         mimeTypes.Add ("cpp", "text/plain");
107                         mimeTypes.Add ("cpt", "application/x-cpt");
108                         mimeTypes.Add ("crd", "application/x-mscardfile");
109                         mimeTypes.Add ("crl", "application/pkix-crl");
110                         mimeTypes.Add ("crt", "application/pkix-cert");
111                         mimeTypes.Add ("csh", "application/x-csh");
112                         mimeTypes.Add ("css", "text/css");
113                         mimeTypes.Add ("c", "text/plain");
114                         mimeTypes.Add ("c++", "text/plain");
115                         mimeTypes.Add ("cxx", "text/plain");
116                         mimeTypes.Add ("dart", "application/dart");
117                         mimeTypes.Add ("dcr", "application/x-director");
118                         mimeTypes.Add ("deb", "application/x-deb");
119                         mimeTypes.Add ("deepv", "application/x-deepv");
120                         mimeTypes.Add ("def", "text/plain");
121                         mimeTypes.Add ("deploy", "application/octet-stream");
122                         mimeTypes.Add ("der", "application/x-x509-ca-cert");
123                         mimeTypes.Add ("dib", "image/bmp");
124                         mimeTypes.Add ("dif", "video/x-dv");
125                         mimeTypes.Add ("dir", "application/x-director");
126                         mimeTypes.Add ("disco", "text/xml");
127                         mimeTypes.Add ("dll", "application/x-msdownload");
128                         mimeTypes.Add ("dl", "video/dl");
129                         mimeTypes.Add ("doc", "application/msword");
130                         mimeTypes.Add ("docm", "application/vnd.ms-word.document.macroEnabled.12");
131                         mimeTypes.Add ("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
132                         mimeTypes.Add ("dot", "application/msword");
133                         mimeTypes.Add ("dotm", "application/vnd.ms-word.template.macroEnabled.12");
134                         mimeTypes.Add ("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
135                         mimeTypes.Add ("dp", "application/commonground");
136                         mimeTypes.Add ("drw", "application/drafting");
137                         mimeTypes.Add ("dtd", "application/xml-dtd");
138                         mimeTypes.Add ("dvi", "application/x-dvi");
139                         mimeTypes.Add ("dv", "video/x-dv");
140                         mimeTypes.Add ("dwf", "drawing/x-dwf (old)");
141                         mimeTypes.Add ("dwg", "application/acad");
142                         mimeTypes.Add ("dxf", "application/dxf");
143                         mimeTypes.Add ("dxr", "application/x-director");
144                         mimeTypes.Add ("elc", "application/x-elc");
145                         mimeTypes.Add ("el", "text/x-script.elisp");
146                         mimeTypes.Add ("eml", "message/rfc822");
147                         mimeTypes.Add ("eot", "application/vnd.bw-fontobject");
148                         mimeTypes.Add ("eps", "application/postscript");
149                         mimeTypes.Add ("es", "application/x-esrehber");
150                         mimeTypes.Add ("etx", "text/x-setext");
151                         mimeTypes.Add ("evy", "application/envoy");
152                         mimeTypes.Add ("exe", "application/octet-stream");
153                         mimeTypes.Add ("f77", "text/plain");
154                         mimeTypes.Add ("f90", "text/plain");
155                         mimeTypes.Add ("fdf", "application/vnd.fdf");
156                         mimeTypes.Add ("fif", "image/fif");
157                         mimeTypes.Add ("flac", "audio/x-flac");
158                         mimeTypes.Add ("fli", "video/fli");
159                         mimeTypes.Add ("flo", "image/florian");
160                         mimeTypes.Add ("flr", "x-world/x-vrml");
161                         mimeTypes.Add ("flx", "text/vnd.fmi.flexstor");
162                         mimeTypes.Add ("fmf", "video/x-atomic3d-feature");
163                         mimeTypes.Add ("for", "text/plain");
164                         mimeTypes.Add ("fpx", "image/vnd.fpx");
165                         mimeTypes.Add ("frl", "application/freeloader");
166                         mimeTypes.Add ("f", "text/plain");
167                         mimeTypes.Add ("funk", "audio/make");
168                         mimeTypes.Add ("g3", "image/g3fax");
169                         mimeTypes.Add ("gif", "image/gif");
170                         mimeTypes.Add ("gl", "video/gl");
171                         mimeTypes.Add ("gsd", "audio/x-gsm");
172                         mimeTypes.Add ("gsm", "audio/x-gsm");
173                         mimeTypes.Add ("gsp", "application/x-gsp");
174                         mimeTypes.Add ("gss", "application/x-gss");
175                         mimeTypes.Add ("gtar", "application/x-gtar");
176                         mimeTypes.Add ("g", "text/plain");
177                         mimeTypes.Add ("gz", "application/x-gzip");
178                         mimeTypes.Add ("gzip", "application/x-gzip");
179                         mimeTypes.Add ("hdf", "application/x-hdf");
180                         mimeTypes.Add ("help", "application/x-helpfile");
181                         mimeTypes.Add ("hgl", "application/vnd.hp-HPGL");
182                         mimeTypes.Add ("hh", "text/plain");
183                         mimeTypes.Add ("hlb", "text/x-script");
184                         mimeTypes.Add ("hlp", "application/x-helpfile");
185                         mimeTypes.Add ("hpg", "application/vnd.hp-HPGL");
186                         mimeTypes.Add ("hpgl", "application/vnd.hp-HPGL");
187                         mimeTypes.Add ("hqx", "application/binhex");
188                         mimeTypes.Add ("hta", "application/hta");
189                         mimeTypes.Add ("htc", "text/x-component");
190                         mimeTypes.Add ("h", "text/plain");
191                         mimeTypes.Add ("htmls", "text/html");
192                         mimeTypes.Add ("html", "text/html");
193                         mimeTypes.Add ("htm", "text/html");
194                         mimeTypes.Add ("htt", "text/webviewhtml");
195                         mimeTypes.Add ("htx", "text/html");
196                         mimeTypes.Add ("ice", "x-conference/x-cooltalk");
197                         mimeTypes.Add ("ico", "image/x-icon");
198                         mimeTypes.Add ("ics", "text/calendar");
199                         mimeTypes.Add ("idc", "text/plain");
200                         mimeTypes.Add ("ief", "image/ief");
201                         mimeTypes.Add ("iefs", "image/ief");
202                         mimeTypes.Add ("iges", "application/iges");
203                         mimeTypes.Add ("igs", "application/iges");
204                         mimeTypes.Add ("iii", "application/x-iphone");
205                         mimeTypes.Add ("ima", "application/x-ima");
206                         mimeTypes.Add ("imap", "application/x-httpd-imap");
207                         mimeTypes.Add ("inf", "application/inf");
208                         mimeTypes.Add ("ins", "application/x-internett-signup");
209                         mimeTypes.Add ("ip", "application/x-ip2");
210                         mimeTypes.Add ("isp", "application/x-internet-signup");
211                         mimeTypes.Add ("isu", "video/x-isvideo");
212                         mimeTypes.Add ("it", "audio/it");
213                         mimeTypes.Add ("iv", "application/x-inventor");
214                         mimeTypes.Add ("ivf", "video/x-ivf");
215                         mimeTypes.Add ("ivr", "i-world/i-vrml");
216                         mimeTypes.Add ("ivy", "application/x-livescreen");
217                         mimeTypes.Add ("jam", "audio/x-jam");
218                         mimeTypes.Add ("jar", "application/java-archive");
219                         mimeTypes.Add ("java", "text/plain");
220                         mimeTypes.Add ("jav", "text/plain");
221                         mimeTypes.Add ("jcm", "application/x-java-commerce");
222                         mimeTypes.Add ("jfif", "image/jpeg");
223                         mimeTypes.Add ("jfif-tbnl", "image/jpeg");
224                         mimeTypes.Add ("jpeg", "image/jpeg");
225                         mimeTypes.Add ("jpe", "image/jpeg");
226                         mimeTypes.Add ("jpg", "image/jpeg");
227                         mimeTypes.Add ("jps", "image/x-jps");
228                         mimeTypes.Add ("js", "application/javascript");
229                         mimeTypes.Add ("json", "application/json");
230                         mimeTypes.Add ("jut", "image/jutvision");
231                         mimeTypes.Add ("kar", "audio/midi");
232                         mimeTypes.Add ("ksh", "text/x-script.ksh");
233                         mimeTypes.Add ("la", "audio/nspaudio");
234                         mimeTypes.Add ("lam", "audio/x-liveaudio");
235                         mimeTypes.Add ("latex", "application/x-latex");
236                         mimeTypes.Add ("less", "text/css");
237                         mimeTypes.Add ("list", "text/plain");
238                         mimeTypes.Add ("lma", "audio/nspaudio");
239                         mimeTypes.Add ("log", "text/plain");
240                         mimeTypes.Add ("lsp", "application/x-lisp");
241                         mimeTypes.Add ("lst", "text/plain");
242                         mimeTypes.Add ("lsx", "text/x-la-asf");
243                         mimeTypes.Add ("ltx", "application/x-latex");
244                         mimeTypes.Add ("m13", "application/x-msmediaview");
245                         mimeTypes.Add ("m14", "application/x-msmediaview");
246                         mimeTypes.Add ("m1v", "video/mpeg");
247                         mimeTypes.Add ("m2a", "audio/mpeg");
248                         mimeTypes.Add ("m2v", "video/mpeg");
249                         mimeTypes.Add ("m3u", "audio/x-mpequrl");
250                         mimeTypes.Add ("m4a", "audio/mp4");
251                         mimeTypes.Add ("m4v", "video/mp4");
252                         mimeTypes.Add ("man", "application/x-troff-man");
253                         mimeTypes.Add ("manifest", "application/x-ms-manifest");
254                         mimeTypes.Add ("map", "application/x-navimap");
255                         mimeTypes.Add ("mar", "text/plain");
256                         mimeTypes.Add ("mbd", "application/mbedlet");
257                         mimeTypes.Add ("mc$", "application/x-magic-cap-package-1.0");
258                         mimeTypes.Add ("mcd", "application/mcad");
259                         mimeTypes.Add ("mcf", "image/vasa");
260                         mimeTypes.Add ("mcp", "application/netmc");
261                         mimeTypes.Add ("mdb", "application/x-msaccess");
262                         mimeTypes.Add ("mesh", "model/mesh");
263                         mimeTypes.Add ("me", "application/x-troff-me");
264                         mimeTypes.Add ("mht", "message/rfc822");
265                         mimeTypes.Add ("mhtml", "message/rfc822");
266                         mimeTypes.Add ("mid", "audio/midi");
267                         mimeTypes.Add ("midi", "audio/midi");
268                         mimeTypes.Add ("mif", "application/x-mif");
269                         mimeTypes.Add ("mime", "message/rfc822");
270                         mimeTypes.Add ("mjf", "audio/x-vnd.AudioExplosion.MjuiceMediaFile");
271                         mimeTypes.Add ("mjpg", "video/x-motion-jpeg");
272                         mimeTypes.Add ("mm", "application/base64");
273                         mimeTypes.Add ("mme", "application/base64");
274                         mimeTypes.Add ("mny", "application/x-msmoney");
275                         mimeTypes.Add ("mod", "audio/mod");
276                         mimeTypes.Add ("mov", "video/quicktime");
277                         mimeTypes.Add ("movie", "video/x-sgi-movie");
278                         mimeTypes.Add ("moov", "video/quicktime");
279                         mimeTypes.Add ("mp2", "video/mpeg");
280                         mimeTypes.Add ("mp3", "audio/mpeg");
281                         mimeTypes.Add ("mp4", "video/mp4");
282                         //mimeTypes.Add ("mp4a", "audio/mp4");  // A common but unofficial alternative to m4a
283                         mimeTypes.Add ("mpa", "audio/mpeg");
284                         mimeTypes.Add ("mpc", "application/x-project");
285                         mimeTypes.Add ("mpeg", "video/mpeg");
286                         mimeTypes.Add ("mpe", "video/mpeg");
287                         mimeTypes.Add ("mpga", "audio/mpeg");
288                         mimeTypes.Add ("mpg", "video/mpeg");
289                         mimeTypes.Add ("mpp", "application/vnd.ms-project");
290                         mimeTypes.Add ("mpt", "application/x-project");
291                         mimeTypes.Add ("mpv2", "video/mpeg");
292                         mimeTypes.Add ("mpv", "application/x-project");
293                         mimeTypes.Add ("mpx", "application/x-project");
294                         mimeTypes.Add ("mrc", "application/marc");
295                         mimeTypes.Add ("ms", "application/x-troff-ms");
296                         mimeTypes.Add ("msh", "model/mesh");
297                         mimeTypes.Add ("m", "text/plain");
298                         mimeTypes.Add ("mvb", "application/x-msmediaview");
299                         mimeTypes.Add ("mv", "video/x-sgi-movie");
300                         mimeTypes.Add ("my", "audio/make");
301                         mimeTypes.Add ("mzz", "application/x-vnd.AudioExplosion.mzz");
302                         mimeTypes.Add ("nap", "image/naplps");
303                         mimeTypes.Add ("naplps", "image/naplps");
304                         mimeTypes.Add ("nc", "application/x-netcdf");
305                         mimeTypes.Add ("ncm", "application/vnd.nokia.configuration-message");
306                         mimeTypes.Add ("niff", "image/x-niff");
307                         mimeTypes.Add ("nif", "image/x-niff");
308                         mimeTypes.Add ("nix", "application/x-mix-transfer");
309                         mimeTypes.Add ("nsc", "application/x-conference");
310                         mimeTypes.Add ("nvd", "application/x-navidoc");
311                         mimeTypes.Add ("nws", "message/rfc822");
312                         mimeTypes.Add ("oda", "application/oda");
313                         mimeTypes.Add ("ods", "application/oleobject");
314                         mimeTypes.Add ("oga", "audio/ogg");
315                         mimeTypes.Add ("ogg", "audio/ogg");
316                         mimeTypes.Add ("ogv", "video/ogg");
317                         mimeTypes.Add ("ogx", "application/ogg");
318                         mimeTypes.Add ("omc", "application/x-omc");
319                         mimeTypes.Add ("omcd", "application/x-omcdatamaker");
320                         mimeTypes.Add ("omcr", "application/x-omcregerator");
321                         mimeTypes.Add ("opus", "audio/ogg");
322                         mimeTypes.Add ("oxps", "application/oxps");
323                         mimeTypes.Add ("p10", "application/pkcs10");
324                         mimeTypes.Add ("p12", "application/pkcs-12");
325                         mimeTypes.Add ("p7a", "application/x-pkcs7-signature");
326                         mimeTypes.Add ("p7b", "application/x-pkcs7-certificates");
327                         mimeTypes.Add ("p7c", "application/pkcs7-mime");
328                         mimeTypes.Add ("p7m", "application/pkcs7-mime");
329                         mimeTypes.Add ("p7r", "application/x-pkcs7-certreqresp");
330                         mimeTypes.Add ("p7s", "application/pkcs7-signature");
331                         mimeTypes.Add ("part", "application/pro_eng");
332                         mimeTypes.Add ("pas", "text/pascal");
333                         mimeTypes.Add ("pbm", "image/x-portable-bitmap");
334                         mimeTypes.Add ("pcl", "application/x-pcl");
335                         mimeTypes.Add ("pct", "image/x-pict");
336                         mimeTypes.Add ("pcx", "image/x-pcx");
337                         mimeTypes.Add ("pdb", "chemical/x-pdb");
338                         mimeTypes.Add ("pdf", "application/pdf");
339                         mimeTypes.Add ("pfunk", "audio/make");
340                         mimeTypes.Add ("pfx", "application/x-pkcs12");
341                         mimeTypes.Add ("pgm", "image/x-portable-graymap");
342                         mimeTypes.Add ("pic", "image/pict");
343                         mimeTypes.Add ("pict", "image/pict");
344                         mimeTypes.Add ("pkg", "application/x-newton-compatible-pkg");
345                         mimeTypes.Add ("pko", "application/vnd.ms-pki.pko");
346                         mimeTypes.Add ("pl", "text/plain");
347                         mimeTypes.Add ("plx", "application/x-PiXCLscript");
348                         mimeTypes.Add ("pm4", "application/x-pagemaker");
349                         mimeTypes.Add ("pm5", "application/x-pagemaker");
350                         mimeTypes.Add ("pma", "application/x-perfmon");
351                         mimeTypes.Add ("pmc", "application/x-perfmon");
352                         mimeTypes.Add ("pm", "image/x-xpixmap");
353                         mimeTypes.Add ("pml", "application/x-perfmon");
354                         mimeTypes.Add ("pmr", "application/x-perfmon");
355                         mimeTypes.Add ("pmw", "application/x-perfmon");
356                         mimeTypes.Add ("png", "image/png");
357                         mimeTypes.Add ("pnm", "application/x-portable-anymap");
358                         mimeTypes.Add ("pot", "application/vnd.ms-powerpoint");
359                         mimeTypes.Add ("potm", "application/vnd.ms-powerpoint.template.macroEnabled.12");
360                         mimeTypes.Add ("potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
361                         mimeTypes.Add ("pov", "model/x-pov");
362                         mimeTypes.Add ("ppa", "application/vnd.ms-powerpoint");
363                         mimeTypes.Add ("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
364                         mimeTypes.Add ("ppm", "image/x-portable-pixmap");
365                         mimeTypes.Add ("pps", "application/vnd.ms-powerpoint");
366                         mimeTypes.Add ("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
367                         mimeTypes.Add ("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
368                         mimeTypes.Add ("ppt", "application/vnd.ms-powerpoint");
369                         mimeTypes.Add ("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
370                         mimeTypes.Add ("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
371                         mimeTypes.Add ("ppz", "application/mspowerpoint");
372                         mimeTypes.Add ("pre", "application/x-freelance");
373                         mimeTypes.Add ("prf", "application/pics-rules");
374                         mimeTypes.Add ("prt", "application/pro_eng");
375                         mimeTypes.Add ("ps", "application/postscript");
376                         mimeTypes.Add ("p", "text/x-pascal");
377                         mimeTypes.Add ("pub", "application/x-mspublisher");
378                         mimeTypes.Add ("pvu", "paleovu/x-pv");
379                         mimeTypes.Add ("pwz", "application/vnd.ms-powerpoint");
380                         mimeTypes.Add ("pyc", "applicaiton/x-bytecode.python");
381                         mimeTypes.Add ("py", "text/x-script.phyton");
382                         mimeTypes.Add ("qcp", "audio/vnd.qcelp");
383                         mimeTypes.Add ("qd3d", "x-world/x-3dmf");
384                         mimeTypes.Add ("qd3", "x-world/x-3dmf");
385                         mimeTypes.Add ("qif", "image/x-quicktime");
386                         mimeTypes.Add ("qtc", "video/x-qtc");
387                         mimeTypes.Add ("qtif", "image/x-quicktime");
388                         mimeTypes.Add ("qti", "image/x-quicktime");
389                         mimeTypes.Add ("qt", "video/quicktime");
390                         mimeTypes.Add ("ra", "audio/x-pn-realaudio");
391                         mimeTypes.Add ("ram", "audio/x-pn-realaudio");
392                         mimeTypes.Add ("ras", "application/x-cmu-raster");
393                         mimeTypes.Add ("rast", "image/cmu-raster");
394                         mimeTypes.Add ("rexx", "text/x-script.rexx");
395                         mimeTypes.Add ("rf", "image/vnd.rn-realflash");
396                         mimeTypes.Add ("rgb", "image/x-rgb");
397                         mimeTypes.Add ("rm", "application/vnd.rn-realmedia");
398                         mimeTypes.Add ("rmi", "audio/mid");
399                         mimeTypes.Add ("rmm", "audio/x-pn-realaudio");
400                         mimeTypes.Add ("rmp", "audio/x-pn-realaudio");
401                         mimeTypes.Add ("rng", "application/ringing-tones");
402                         mimeTypes.Add ("rnx", "application/vnd.rn-realplayer");
403                         mimeTypes.Add ("roff", "application/x-troff");
404                         mimeTypes.Add ("rp", "image/vnd.rn-realpix");
405                         mimeTypes.Add ("rpm", "audio/x-pn-realaudio-plugin");
406                         mimeTypes.Add ("rss", "application/rss+xml");
407                         mimeTypes.Add ("rtf", "text/richtext");
408                         mimeTypes.Add ("rt", "text/richtext");
409                         mimeTypes.Add ("rtx", "text/richtext");
410                         mimeTypes.Add ("rv", "video/vnd.rn-realvideo");
411                         mimeTypes.Add ("s3m", "audio/s3m");
412                         mimeTypes.Add ("sbk", "application/x-tbook");
413                         mimeTypes.Add ("scd", "application/x-msschedule");
414                         mimeTypes.Add ("scm", "application/x-lotusscreencam");
415                         mimeTypes.Add ("sct", "text/scriptlet");
416                         mimeTypes.Add ("sdml", "text/plain");
417                         mimeTypes.Add ("sdp", "application/sdp");
418                         mimeTypes.Add ("sdr", "application/sounder");
419                         mimeTypes.Add ("sea", "application/sea");
420                         mimeTypes.Add ("set", "application/set");
421                         mimeTypes.Add ("setpay", "application/set-payment-initiation");
422                         mimeTypes.Add ("setreg", "application/set-registration-initiation");
423                         mimeTypes.Add ("sgml", "text/sgml");
424                         mimeTypes.Add ("sgm", "text/sgml");
425                         mimeTypes.Add ("shar", "application/x-bsh");
426                         mimeTypes.Add ("sh", "text/x-script.sh");
427                         mimeTypes.Add ("shtml", "text/html");
428                         mimeTypes.Add ("sid", "audio/x-psid");
429                         mimeTypes.Add ("silo", "model/mesh");
430                         mimeTypes.Add ("sit", "application/x-sit");
431                         mimeTypes.Add ("skd", "application/x-koan");
432                         mimeTypes.Add ("skm", "application/x-koan");
433                         mimeTypes.Add ("skp", "application/x-koan");
434                         mimeTypes.Add ("skt", "application/x-koan");
435                         mimeTypes.Add ("sl", "application/x-seelogo");
436                         mimeTypes.Add ("smi", "application/smil");
437                         mimeTypes.Add ("smil", "application/smil");
438                         mimeTypes.Add ("snd", "audio/basic");
439                         mimeTypes.Add ("sol", "application/solids");
440                         mimeTypes.Add ("spc", "application/x-pkcs7-certificates");
441                         mimeTypes.Add ("spl", "application/futuresplash");
442                         mimeTypes.Add ("spr", "application/x-sprite");
443                         mimeTypes.Add ("sprite", "application/x-sprite");
444                         mimeTypes.Add ("spx", "audio/ogg");
445                         mimeTypes.Add ("src", "application/x-wais-source");
446                         mimeTypes.Add ("ssi", "text/x-server-parsed-html");
447                         mimeTypes.Add ("ssm", "application/streamingmedia");
448                         mimeTypes.Add ("sst", "application/vnd.ms-pki.certstore");
449                         mimeTypes.Add ("step", "application/step");
450                         mimeTypes.Add ("s", "text/x-asm");
451                         mimeTypes.Add ("stl", "application/sla");
452                         mimeTypes.Add ("stm", "text/html");
453                         mimeTypes.Add ("stp", "application/step");
454                         mimeTypes.Add ("sv4cpio", "application/x-sv4cpio");
455                         mimeTypes.Add ("sv4crc", "application/x-sv4crc");
456                         mimeTypes.Add ("svf", "image/x-dwg");
457                         mimeTypes.Add ("svg", "image/svg+xml");
458                         mimeTypes.Add ("svr", "application/x-world");
459                         mimeTypes.Add ("swf", "application/x-shockwave-flash");
460                         mimeTypes.Add ("talk", "text/x-speech");
461                         mimeTypes.Add ("t", "application/x-troff");
462                         mimeTypes.Add ("tar", "application/x-tar");
463                         mimeTypes.Add ("tbk", "application/toolbook");
464                         mimeTypes.Add ("tcl", "text/x-script.tcl");
465                         mimeTypes.Add ("tcsh", "text/x-script.tcsh");
466                         mimeTypes.Add ("tex", "application/x-tex");
467                         mimeTypes.Add ("texi", "application/x-texinfo");
468                         mimeTypes.Add ("texinfo", "application/x-texinfo");
469                         mimeTypes.Add ("text", "text/plain");
470                         mimeTypes.Add ("tgz", "application/x-compressed");
471                         mimeTypes.Add ("tiff", "image/tiff");
472                         mimeTypes.Add ("tif", "image/tiff");
473                         mimeTypes.Add ("tr", "application/x-troff");
474                         mimeTypes.Add ("trm", "application/x-msterminal");
475                         mimeTypes.Add ("ts", "text/x-typescript");
476                         mimeTypes.Add ("tsi", "audio/tsp-audio");
477                         mimeTypes.Add ("tsp", "audio/tsplayer");
478                         mimeTypes.Add ("tsv", "text/tab-separated-values");
479                         mimeTypes.Add ("ttf", "application/x-font-ttf");
480                         mimeTypes.Add ("turbot", "image/florian");
481                         mimeTypes.Add ("txt", "text/plain");
482                         mimeTypes.Add ("uil", "text/x-uil");
483                         mimeTypes.Add ("uls", "text/iuls");
484                         mimeTypes.Add ("unis", "text/uri-list");
485                         mimeTypes.Add ("uni", "text/uri-list");
486                         mimeTypes.Add ("unv", "application/i-deas");
487                         mimeTypes.Add ("uris", "text/uri-list");
488                         mimeTypes.Add ("uri", "text/uri-list");
489                         mimeTypes.Add ("ustar", "multipart/x-ustar");
490                         mimeTypes.Add ("uue", "text/x-uuencode");
491                         mimeTypes.Add ("uu", "text/x-uuencode");
492                         mimeTypes.Add ("vcd", "application/x-cdlink");
493                         mimeTypes.Add ("vcf", "text/vcard");
494                         mimeTypes.Add ("vcard", "text/vcard");
495                         mimeTypes.Add ("vcs", "text/x-vCalendar");
496                         mimeTypes.Add ("vda", "application/vda");
497                         mimeTypes.Add ("vdo", "video/vdo");
498                         mimeTypes.Add ("vew", "application/groupwise");
499                         mimeTypes.Add ("vivo", "video/vivo");
500                         mimeTypes.Add ("viv", "video/vivo");
501                         mimeTypes.Add ("vmd", "application/vocaltec-media-desc");
502                         mimeTypes.Add ("vmf", "application/vocaltec-media-file");
503                         mimeTypes.Add ("voc", "audio/voc");
504                         mimeTypes.Add ("vos", "video/vosaic");
505                         mimeTypes.Add ("vox", "audio/voxware");
506                         mimeTypes.Add ("vqe", "audio/x-twinvq-plugin");
507                         mimeTypes.Add ("vqf", "audio/x-twinvq");
508                         mimeTypes.Add ("vql", "audio/x-twinvq-plugin");
509                         mimeTypes.Add ("vrml", "application/x-vrml");
510                         mimeTypes.Add ("vrt", "x-world/x-vrt");
511                         mimeTypes.Add ("vsd", "application/x-visio");
512                         mimeTypes.Add ("vst", "application/x-visio");
513                         mimeTypes.Add ("vsw", "application/x-visio");
514                         mimeTypes.Add ("w60", "application/wordperfect6.0");
515                         mimeTypes.Add ("w61", "application/wordperfect6.1");
516                         mimeTypes.Add ("w6w", "application/msword");
517                         mimeTypes.Add ("wav", "audio/wav");
518                         mimeTypes.Add ("wb1", "application/x-qpro");
519                         mimeTypes.Add ("wbmp", "image/vnd.wap.wbmp");
520                         mimeTypes.Add ("wcm", "application/vnd.ms-works");
521                         mimeTypes.Add ("wdb", "application/vnd.ms-works");
522                         mimeTypes.Add ("web", "application/vnd.xara");
523                         mimeTypes.Add ("webm", "video/webm");
524                         mimeTypes.Add ("wiz", "application/msword");
525                         mimeTypes.Add ("wk1", "application/x-123");
526                         mimeTypes.Add ("wks", "application/vnd.ms-works");
527                         mimeTypes.Add ("wmf", "windows/metafile");
528                         mimeTypes.Add ("wmlc", "application/vnd.wap.wmlc");
529                         mimeTypes.Add ("wmlsc", "application/vnd.wap.wmlscriptc");
530                         mimeTypes.Add ("wmls", "text/vnd.wap.wmlscript");
531                         mimeTypes.Add ("wml", "text/vnd.wap.wml");
532                         mimeTypes.Add ("wmp", "video/x-ms-wmp");
533                         mimeTypes.Add ("woff", "application/font-woff");
534                         mimeTypes.Add ("word", "application/msword");
535                         mimeTypes.Add ("wp5", "application/wordperfect");
536                         mimeTypes.Add ("wp6", "application/wordperfect");
537                         mimeTypes.Add ("wp", "application/wordperfect");
538                         mimeTypes.Add ("wpd", "application/wordperfect");
539                         mimeTypes.Add ("wps", "application/vnd.ms-works");
540                         mimeTypes.Add ("wq1", "application/x-lotus");
541                         mimeTypes.Add ("wri", "application/mswrite");
542                         mimeTypes.Add ("wrl", "application/x-world");
543                         mimeTypes.Add ("wrz", "model/vrml");
544                         mimeTypes.Add ("wsc", "text/scriplet");
545                         mimeTypes.Add ("wsdl", "text/xml");
546                         mimeTypes.Add ("wsrc", "application/x-wais-source");
547                         mimeTypes.Add ("wtk", "application/x-wintalk");
548                         mimeTypes.Add ("x3d", "model/x3d+xml");
549                         mimeTypes.Add ("x3db", "model/x3d+fastinfoset");
550                         mimeTypes.Add ("x3dv", "model/x3d-vrml");
551                         mimeTypes.Add ("xaf", "x-world/x-vrml");
552                         mimeTypes.Add ("xaml", "application/xaml+xml");
553                         mimeTypes.Add ("xap", "application/x-silverlight-app");
554                         mimeTypes.Add ("xbap", "application/x-ms-xbap");
555                         mimeTypes.Add ("xbm", "image/x-xbitmap");
556                         mimeTypes.Add ("xdr", "video/x-amt-demorun");
557                         mimeTypes.Add ("xgz", "xgl/drawing");
558                         mimeTypes.Add ("xht", "application/xhtml+xml");
559                         mimeTypes.Add ("xhtml", "application/xhtml+xml");
560                         mimeTypes.Add ("xif", "image/vnd.xiff");
561                         mimeTypes.Add ("xla", "application/vnd.ms-excel");
562                         mimeTypes.Add ("xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
563                         mimeTypes.Add ("xl", "application/excel");
564                         mimeTypes.Add ("xlb", "application/excel");
565                         mimeTypes.Add ("xlc", "application/excel");
566                         mimeTypes.Add ("xld", "application/excel");
567                         mimeTypes.Add ("xlk", "application/excel");
568                         mimeTypes.Add ("xll", "application/excel");
569                         mimeTypes.Add ("xlm", "application/excel");
570                         mimeTypes.Add ("xls", "application/vnd.ms-excel");
571                         mimeTypes.Add ("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
572                         mimeTypes.Add ("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
573                         mimeTypes.Add ("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
574                         mimeTypes.Add ("xlt", "application/vnd.ms-excel");
575                         mimeTypes.Add ("xltm", "application/vnd.ms-excel.template.macroEnabled.12");
576                         mimeTypes.Add ("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
577                         mimeTypes.Add ("xlv", "application/excel");
578                         mimeTypes.Add ("xlw", "application/excel");
579                         mimeTypes.Add ("xm", "audio/xm");
580                         mimeTypes.Add ("xml", "text/xml");
581                         mimeTypes.Add ("xmz", "xgl/movie");
582                         mimeTypes.Add ("xof", "x-world/x-vrml");
583                         mimeTypes.Add ("xpi", "application/x-xpinstall");
584                         mimeTypes.Add ("xpix", "application/x-vnd.ls-xpix");
585                         mimeTypes.Add ("xpm", "image/xpm");
586                         mimeTypes.Add ("xps", "application/vnd.ms-xpsdocument");
587                         mimeTypes.Add ("x-png", "image/png");
588                         mimeTypes.Add ("xsd", "text/xml");
589                         mimeTypes.Add ("xsl", "text/xml");
590                         mimeTypes.Add ("xslt", "text/xml");
591                         mimeTypes.Add ("xsr", "video/x-amt-showrun");
592                         mimeTypes.Add ("xwd", "image/x-xwd");
593                         mimeTypes.Add ("xyz", "chemical/x-pdb");
594                         mimeTypes.Add ("z", "application/x-compressed");
595                         mimeTypes.Add ("zip", "application/zip");
596                         mimeTypes.Add ("zsh", "text/x-script.zsh");
597                 }
598
599                 public static string GetMimeType (string fileName)
600                 {
601                         string result = null;
602                         int dot = fileName.LastIndexOf ('.');
603
604                         if (dot != -1 && fileName.Length > dot + 1)
605                                 mimeTypes.TryGetValue (fileName.Substring (dot + 1), out result);
606                         
607                         if (result == null)
608                                 result = "application/octet-stream";
609
610                         return result;
611                 }
612         }
613 }