Fix crash when popover is dismissed while a view is presented modally.
[pithos-ios] / Classes / OCMimeType.m
1 //
2 //  OCMimeType.m
3 //  OCMimeType
4 //
5 //  Created by Mike Mayo on 1/6/11.
6 //  Copyright 2011 Mike Mayo. All rights reserved.
7 //
8
9 #import "OCMimeType.h"
10
11
12 @implementation OCMimeType
13
14 static NSDictionary *mimeTypes = nil;
15 static NSDictionary *fileExtensions = nil;
16
17 + (void)initialize {
18     fileExtensions = [NSDictionary dictionaryWithObjectsAndKeys:
19                       @" ", @"application/octet-stream",
20                       @"323", @"text/h323",
21                       @"acx", @"application/internet-property-stream",
22                       @"ai", @"application/postscript",
23                       @"aif", @"audio/x-aiff",
24                       @"aifc", @"audio/x-aiff",
25                       @"aiff", @"audio/x-aiff",
26                       @"asf", @"video/x-ms-asf",
27                       @"asr", @"video/x-ms-asf",
28                       @"asx", @"video/x-ms-asf",
29                       @"au", @"audio/basic",
30                       @"avi", @"video/x-msvideo",
31                       @"axs", @"application/olescript",
32                       @"bas", @"text/plain",
33                       @"bcpio", @"application/x-bcpio",
34                       @"bin", @"application/octet-stream",
35                       @"bmp", @"image/bmp",
36                       @"c", @"text/plain",
37                       @"cat", @"application/vnd.ms-pkiseccat",
38                       @"cdf", @"application/x-cdf",
39                       @"cer", @"application/x-x509-ca-cert",
40                       @"class", @"application/octet-stream",
41                       @"clp", @"application/x-msclip",
42                       @"cmx", @"image/x-cmx",
43                       @"cod", @"image/cis-cod",
44                       @"cpio", @"application/x-cpio",
45                       @"crd", @"application/x-mscardfile",
46                       @"crl", @"application/pkix-crl",
47                       @"crt", @"application/x-x509-ca-cert",
48                       @"csh", @"application/x-csh",
49                       @"css", @"text/css",
50                       @"dcr", @"application/x-director",
51                       @"der", @"application/x-x509-ca-cert",
52                       @"dir", @"application/x-director",
53                       @"dll", @"application/x-msdownload",
54                       @"dms", @"application/octet-stream",
55                       @"doc", @"application/msword",
56                       @"dot", @"application/msword",
57                       @"dvi", @"application/x-dvi",
58                       @"dxr", @"application/x-director",
59                       @"eps", @"application/postscript",
60                       @"etx", @"text/x-setext",
61                       @"evy", @"application/envoy",
62                       @"exe", @"application/octet-stream",
63                       @"fif", @"application/fractals",
64                       @"flr", @"x-world/x-vrml",
65                       @"gif", @"image/gif",
66                       @"gtar", @"application/x-gtar",
67                       @"gz", @"application/x-gzip",
68                       @"h", @"text/plain",
69                       @"hdf", @"application/x-hdf",
70                       @"hlp", @"application/winhlp",
71                       @"hqx", @"application/mac-binhex40",
72                       @"hta", @"application/hta",
73                       @"htc", @"text/x-component",
74                       @"htm", @"text/html",
75                       @"html", @"text/html",
76                       @"htt", @"text/webviewhtml",
77                       @"ico", @"image/x-icon",
78                       @"ief", @"image/ief",
79                       @"iii", @"application/x-iphone",
80                       @"ins", @"application/x-internet-signup",
81                       @"isp", @"application/x-internet-signup",
82                       @"jfif", @"image/pipeg",
83                       @"jpe", @"image/jpeg",
84                       @"jpeg", @"image/jpeg",
85                       @"jpg", @"image/jpeg",
86                       @"js", @"application/x-javascript",
87                       @"latex", @"application/x-latex",
88                       @"lha", @"application/octet-stream",
89                       @"lsf", @"video/x-la-asf",
90                       @"lsx", @"video/x-la-asf",
91                       @"lzh", @"application/octet-stream",
92                       @"m13", @"application/x-msmediaview",
93                       @"m14", @"application/x-msmediaview",
94                       @"m3u", @"audio/x-mpegurl",
95                       @"man", @"application/x-troff-man",
96                       @"mdb", @"application/x-msaccess",
97                       @"me", @"application/x-troff-me",
98                       @"mht", @"message/rfc822",
99                       @"mhtml", @"message/rfc822",
100                       @"mid", @"audio/mid",
101                       @"mny", @"application/x-msmoney",
102                       @"mov", @"video/quicktime",
103                       @"movie", @"video/x-sgi-movie",
104                       @"mp2", @"video/mpeg",
105                       @"mp3", @"audio/mpeg",
106                       @"mpa", @"video/mpeg",
107                       @"mpe", @"video/mpeg",
108                       @"mpeg", @"video/mpeg",
109                       @"mpg", @"video/mpeg",
110                       @"mpp", @"application/vnd.ms-project",
111                       @"mpv2", @"video/mpeg",
112                       @"ms", @"application/x-troff-ms",
113                       @"mvb", @"application/x-msmediaview",
114                       @"nws", @"message/rfc822",
115                       @"oda", @"application/oda",
116                       @"p10", @"application/pkcs10",
117                       @"p12", @"application/x-pkcs12",
118                       @"p7b", @"application/x-pkcs7-certificates",
119                       @"p7c", @"application/x-pkcs7-mime",
120                       @"p7m", @"application/x-pkcs7-mime",
121                       @"p7r", @"application/x-pkcs7-certreqresp",
122                       @"p7s", @"application/x-pkcs7-signature",
123                       @"pbm", @"image/x-portable-bitmap",
124                       @"pdf", @"application/pdf",
125                       @"pfx", @"application/x-pkcs12",
126                       @"pgm", @"image/x-portable-graymap",
127                       @"pko", @"application/ynd.ms-pkipko",
128                       @"pma", @"application/x-perfmon",
129                       @"pmc", @"application/x-perfmon",
130                       @"pml", @"application/x-perfmon",
131                       @"pmr", @"application/x-perfmon",
132                       @"pmw", @"application/x-perfmon",
133                       @"pnm", @"image/x-portable-anymap",
134                       @"pot,", @"application/vnd.ms-powerpoint",
135                       @"ppm", @"image/x-portable-pixmap",
136                       @"pps", @"application/vnd.ms-powerpoint",
137                       @"ppt", @"application/vnd.ms-powerpoint",
138                       @"prf", @"application/pics-rules",
139                       @"ps", @"application/postscript",
140                       @"pub", @"application/x-mspublisher",
141                       @"qt", @"video/quicktime",
142                       @"ra", @"audio/x-pn-realaudio",
143                       @"ram", @"audio/x-pn-realaudio",
144                       @"ras", @"image/x-cmu-raster",
145                       @"rgb", @"image/x-rgb",
146                       @"rmi", @"audio/mid",
147                       @"roff", @"application/x-troff",
148                       @"rtf", @"application/rtf",
149                       @"rtx", @"text/richtext",
150                       @"scd", @"application/x-msschedule",
151                       @"sct", @"text/scriptlet",
152                       @"setpay", @"application/set-payment-initiation",
153                       @"setreg", @"application/set-registration-initiation",
154                       @"sh", @"application/x-sh",
155                       @"shar", @"application/x-shar",
156                       @"sit", @"application/x-stuffit",
157                       @"snd", @"audio/basic",
158                       @"spc", @"application/x-pkcs7-certificates",
159                       @"spl", @"application/futuresplash",
160                       @"src", @"application/x-wais-source",
161                       @"sst", @"application/vnd.ms-pkicertstore",
162                       @"stl", @"application/vnd.ms-pkistl",
163                       @"stm", @"text/html",
164                       @"svg", @"image/svg+xml",
165                       @"sv4cpio", @"application/x-sv4cpio",
166                       @"sv4crc", @"application/x-sv4crc",
167                       @"swf", @"application/x-shockwave-flash",
168                       @"t", @"application/x-troff",
169                       @"tar", @"application/x-tar",
170                       @"tcl", @"application/x-tcl",
171                       @"tex", @"application/x-tex",
172                       @"texi", @"application/x-texinfo",
173                       @"texinfo", @"application/x-texinfo",
174                       @"tgz", @"application/x-compressed",
175                       @"tif", @"image/tiff",
176                       @"tiff", @"image/tiff",
177                       @"tr", @"application/x-troff",
178                       @"trm", @"application/x-msterminal",
179                       @"tsv", @"text/tab-separated-values",
180                       @"txt", @"text/plain",
181                       @"uls", @"text/iuls",
182                       @"ustar", @"application/x-ustar",
183                       @"vcf", @"text/x-vcard",
184                       @"vrml", @"x-world/x-vrml",
185                       @"wav", @"audio/x-wav",
186                       @"wcm", @"application/vnd.ms-works",
187                       @"wdb", @"application/vnd.ms-works",
188                       @"wks", @"application/vnd.ms-works",
189                       @"wmf", @"application/x-msmetafile",
190                       @"wps", @"application/vnd.ms-works",
191                       @"wri", @"application/x-mswrite",
192                       @"wrl", @"x-world/x-vrml",
193                       @"wrz", @"x-world/x-vrml",
194                       @"xaf", @"x-world/x-vrml",
195                       @"xbm", @"image/x-xbitmap",
196                       @"xla", @"application/vnd.ms-excel",
197                       @"xlc", @"application/vnd.ms-excel",
198                       @"xlm", @"application/vnd.ms-excel",
199                       @"xls", @"application/vnd.ms-excel",
200                       @"xlt", @"application/vnd.ms-excel",
201                       @"xlw", @"application/vnd.ms-excel",
202                       @"xof", @"x-world/x-vrml",
203                       @"xpm", @"image/x-xpixmap",
204                       @"xwd", @"image/x-xwindowdump",
205                       @"z", @"application/x-compress",
206                       @"zip", @"application/zip",                      
207                       nil];
208
209     NSMutableDictionary *mimes = [[NSMutableDictionary alloc] initWithCapacity:[fileExtensions count]];
210     for (NSString *key in fileExtensions) {
211         [mimes setObject:key forKey:[fileExtensions objectForKey:key]];
212     }
213     
214     mimeTypes = [NSDictionary dictionaryWithDictionary:mimes];
215     [mimes release];
216 }
217
218 + (NSString *)mimeTypeForFileExtension:(NSString *)fileExtension {
219     return [mimeTypes objectForKey:fileExtension];
220 }
221
222 + (NSString *)fileExtensionForMimeType:(NSString *)mimeType {
223     return [fileExtensions objectForKey:mimeType];
224 }
225
226 @end