5 // Created by Mike Mayo on 1/6/11.
6 // Copyright 2011 Mike Mayo. All rights reserved.
12 @implementation OCMimeType
14 static NSDictionary *mimeTypes = nil;
15 static NSDictionary *fileExtensions = nil;
18 fileExtensions = [NSDictionary dictionaryWithObjectsAndKeys:
19 @" ", @"application/octet-stream",
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",
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",
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",
66 @"gtar", @"application/x-gtar",
67 @"gz", @"application/x-gzip",
69 @"hdf", @"application/x-hdf",
70 @"hlp", @"application/winhlp",
71 @"hqx", @"application/mac-binhex40",
72 @"hta", @"application/hta",
73 @"htc", @"text/x-component",
75 @"html", @"text/html",
76 @"htt", @"text/webviewhtml",
77 @"ico", @"image/x-icon",
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",
209 NSMutableDictionary *mimes = [[NSMutableDictionary alloc] initWithCapacity:[fileExtensions count]];
210 for (NSString *key in fileExtensions) {
211 [mimes setObject:key forKey:[fileExtensions objectForKey:key]];
214 mimeTypes = [NSDictionary dictionaryWithDictionary:mimes];
218 + (NSString *)mimeTypeForFileExtension:(NSString *)fileExtension {
219 return [mimeTypes objectForKey:fileExtension];
222 + (NSString *)fileExtensionForMimeType:(NSString *)mimeType {
223 return [fileExtensions objectForKey:mimeType];