@@ -61,105 +61,31 @@ @implementation FileUtils
61
61
rejecter:(RCTPromiseRejectBlock)reject
62
62
)
63
63
{
64
- NSMutableDictionary *ListOfMimeTypes = [[NSMutableDictionary alloc ] init ];
65
- [ListOfMimeTypes setObject: @" image/jpeg" forKey: @" jpg" ];
66
- [ListOfMimeTypes setObject: @" html" forKey: @" text/html" ];
67
- [ListOfMimeTypes setObject: @" htm" forKey: @" text/html" ];
68
- [ListOfMimeTypes setObject: @" shtml" forKey: @" text/html" ];
69
- [ListOfMimeTypes setObject: @" css" forKey: @" text/css" ];
70
- [ListOfMimeTypes setObject: @" xml" forKey: @" text/xml" ];
71
- [ListOfMimeTypes setObject: @" gif" forKey: @" image/gif" ];
72
- [ListOfMimeTypes setObject: @" jpeg" forKey: @" image/jpeg" ];
73
- [ListOfMimeTypes setObject: @" jpg" forKey: @" image/jpeg" ];
74
- [ListOfMimeTypes setObject: @" js" forKey: @" application/javascript" ];
75
- [ListOfMimeTypes setObject: @" atom" forKey: @" application/atom+xml" ];
76
- [ListOfMimeTypes setObject: @" rss" forKey: @" application/rss+xml" ];
77
- [ListOfMimeTypes setObject: @" mml" forKey: @" text/mathml" ];
78
- [ListOfMimeTypes setObject: @" txt" forKey: @" text/plain" ];
79
- [ListOfMimeTypes setObject: @" jad" forKey: @" text/vnd.sun.j2me.app-descriptor" ];
80
- [ListOfMimeTypes setObject: @" wml" forKey: @" text/vnd.wap.wml" ];
81
- [ListOfMimeTypes setObject: @" htc" forKey: @" text/x-component" ];
82
- [ListOfMimeTypes setObject: @" png" forKey: @" image/png" ];
83
- [ListOfMimeTypes setObject: @" tif" forKey: @" image/tiff" ];
84
- [ListOfMimeTypes setObject: @" tiff" forKey: @" image/tiff" ];
85
- [ListOfMimeTypes setObject: @" wbmp" forKey: @" image/vnd.wap.wbmp" ];
86
- [ListOfMimeTypes setObject: @" ico" forKey: @" image/x-icon" ];
87
- [ListOfMimeTypes setObject: @" jng" forKey: @" image/x-jng" ];
88
- [ListOfMimeTypes setObject: @" bmp" forKey: @" image/x-ms-bmp" ];
89
- [ListOfMimeTypes setObject: @" svg" forKey: @" image/svg+xml" ];
90
- [ListOfMimeTypes setObject: @" svgz" forKey: @" image/svg+xml" ];
91
- [ListOfMimeTypes setObject: @" webp" forKey: @" image/webp" ];
92
- [ListOfMimeTypes setObject: @" woff" forKey: @" application/font-woff" ];
93
- [ListOfMimeTypes setObject: @" jar" forKey: @" application/java-archive" ];
94
- [ListOfMimeTypes setObject: @" war" forKey: @" application/java-archive" ];
95
- [ListOfMimeTypes setObject: @" ear" forKey: @" application/java-archive" ];
96
- [ListOfMimeTypes setObject: @" json" forKey: @" application/json" ];
97
- [ListOfMimeTypes setObject: @" hqx" forKey: @" application/mac-binhex40" ];
98
- [ListOfMimeTypes setObject: @" doc" forKey: @" application/msword" ];
99
- [ListOfMimeTypes setObject: @" pdf" forKey: @" application/pdf" ];
100
- [ListOfMimeTypes setObject: @" ps" forKey: @" application/postscript" ];
101
- [ListOfMimeTypes setObject: @" eps" forKey: @" application/postscript" ];
102
- [ListOfMimeTypes setObject: @" ai" forKey: @" application/postscript" ];
103
- [ListOfMimeTypes setObject: @" rtf" forKey: @" application/rtf" ];
104
- [ListOfMimeTypes setObject: @" m3u8" forKey: @" application/vnd.apple.mpegurl" ];
105
- [ListOfMimeTypes setObject: @" xls" forKey: @" application/vnd.ms-excel" ];
106
- [ListOfMimeTypes setObject: @" eot" forKey: @" application/vnd.ms-fontobject" ];
107
- [ListOfMimeTypes setObject: @" ppt" forKey: @" application/vnd.ms-powerpoint" ];
108
- [ListOfMimeTypes setObject: @" wmlc" forKey: @" application/vnd.wap.wmlc" ];
109
- [ListOfMimeTypes setObject: @" kml" forKey: @" application/vnd.google-earth.kml+xml" ];
110
- [ListOfMimeTypes setObject: @" kmz" forKey: @" application/vnd.google-earth.kmz" ];
111
- [ListOfMimeTypes setObject: @" 7z" forKey: @" application/x-7z-compressed" ];
112
- [ListOfMimeTypes setObject: @" cco" forKey: @" application/x-cocoa" ];
113
- [ListOfMimeTypes setObject: @" jardiff" forKey: @" application/x-java-archive-diff" ];
114
- [ListOfMimeTypes setObject: @" jnlp" forKey: @" application/x-java-jnlp-file" ];
115
- [ListOfMimeTypes setObject: @" run" forKey: @" application/x-makeself" ];
116
- [ListOfMimeTypes setObject: @" pl" forKey: @" application/x-perl" ];
117
- [ListOfMimeTypes setObject: @" pm" forKey: @" application/x-perl" ];
118
- [ListOfMimeTypes setObject: @" prc" forKey: @" application/x-pilot" ];
119
- [ListOfMimeTypes setObject: @" pdb" forKey: @" application/x-pilot" ];
120
- [ListOfMimeTypes setObject: @" rar" forKey: @" application/x-rar-compressed" ];
121
- [ListOfMimeTypes setObject: @" rpm" forKey: @" application/x-redhat-package-manager" ];
122
- [ListOfMimeTypes setObject: @" sea" forKey: @" application/x-sea" ];
123
- [ListOfMimeTypes setObject: @" swf" forKey: @" application/x-shockwave-flash" ];
124
- [ListOfMimeTypes setObject: @" sit" forKey: @" application/x-stuffit" ];
125
- [ListOfMimeTypes setObject: @" tcl" forKey: @" application/x-tcl" ];
126
- [ListOfMimeTypes setObject: @" tk" forKey: @" application/x-tcl" ];
127
- [ListOfMimeTypes setObject: @" der" forKey: @" application/x-x509-ca-cert" ];
128
- [ListOfMimeTypes setObject: @" pem" forKey: @" application/x-x509-ca-cert" ];
129
- [ListOfMimeTypes setObject: @" crt" forKey: @" application/x-x509-ca-cert" ];
130
- [ListOfMimeTypes setObject: @" xpi" forKey: @" application/x-xpinstall" ];
131
- [ListOfMimeTypes setObject: @" xhtml" forKey: @" application/xhtml+xml" ];
132
- [ListOfMimeTypes setObject: @" xspf" forKey: @" application/xspf+xml" ];
133
- [ListOfMimeTypes setObject: @" zip" forKey: @" application/zip" ];
134
- [ListOfMimeTypes setObject: @" epub" forKey: @" application/epub+zip" ];
135
- [ListOfMimeTypes setObject: @" docx" forKey: @" application/vnd.openxmlformats-officedocument.wordprocessingml.document" ];
136
- [ListOfMimeTypes setObject: @" xlsx" forKey: @" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ];
137
- [ListOfMimeTypes setObject: @" pptx" forKey: @" application/vnd.openxmlformats-officedocument.presentationml.presentation" ];
138
- [ListOfMimeTypes setObject: @" mid" forKey: @" audio/midi" ];
139
- [ListOfMimeTypes setObject: @" midi" forKey: @" audio/midi" ];
140
- [ListOfMimeTypes setObject: @" kar" forKey: @" audio/midi" ];
141
- [ListOfMimeTypes setObject: @" mp3" forKey: @" audio/mpeg" ];
142
- [ListOfMimeTypes setObject: @" ogg" forKey: @" audio/ogg" ];
143
- [ListOfMimeTypes setObject: @" m4a" forKey: @" audio/x-m4a" ];
144
- [ListOfMimeTypes setObject: @" ra" forKey: @" audio/x-realaudio" ];
145
- [ListOfMimeTypes setObject: @" 3gpp" forKey: @" video/3gpp" ];
146
- [ListOfMimeTypes setObject: @" 3gp" forKey: @" video/3gpp" ];
147
- [ListOfMimeTypes setObject: @" ts" forKey: @" video/mp2t" ];
148
- [ListOfMimeTypes setObject: @" mp4" forKey: @" video/mp4" ];
149
- [ListOfMimeTypes setObject: @" mpeg" forKey: @" video/mpeg" ];
150
- [ListOfMimeTypes setObject: @" mpg" forKey: @" video/mpeg" ];
151
- [ListOfMimeTypes setObject: @" mov" forKey: @" video/quicktime" ];
152
- [ListOfMimeTypes setObject: @" webm" forKey: @" video/webm" ];
153
- [ListOfMimeTypes setObject: @" flv" forKey: @" video/x-flv" ];
154
- [ListOfMimeTypes setObject: @" m4v" forKey: @" video/x-m4v" ];
155
- [ListOfMimeTypes setObject: @" mng" forKey: @" video/x-mng" ];
156
- [ListOfMimeTypes setObject: @" asx" forKey: @" video/x-ms-asf" ];
157
- [ListOfMimeTypes setObject: @" asf" forKey: @" video/x-ms-asf" ];
158
- [ListOfMimeTypes setObject: @" wmv" forKey: @" video/x-ms-wmv" ];
159
- [ListOfMimeTypes setObject: @" avi" forKey: @" video/x-msvideo" ];
64
+ if ([path hasPrefix: @" ph://" ]){
65
+ NSString *localIdentifier = [path stringByReplacingOccurrencesOfString: @" ph://" withString: @" " ];
66
+ PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers: @[localIdentifier] options: nil ];
67
+ PHContentEditingInputRequestOptions *options = [[PHContentEditingInputRequestOptions alloc ]init];
68
+ [fetchResult.firstObject requestContentEditingInputWithOptions: options completionHandler: ^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
69
+ NSURL *referenceUrl = contentEditingInput.fullSizeImageURL ;
70
+ [self getMimeTypeFromReferenceUrl: referenceUrl resolver: resolve rejecter: reject];
71
+ }];
72
+ } else if ([path hasPrefix: @" file://" ]) {
73
+ NSURL *referenceUrl = [NSURL URLWithString: path];
74
+ [self getMimeTypeFromReferenceUrl: referenceUrl resolver: resolve rejecter: reject];
75
+ } else {
76
+ reject (
77
+ @" GET_MIME_TYPE_NOT_SUPPORTED" ,
78
+ @" The path provided is not supported. Please provide either a file:// or ph:// (PHAsset)" ,
79
+ nil
80
+ );
81
+ }
82
+ }
160
83
161
- NSURL *referenceUrl = [NSURL URLWithString: path];
162
- CFStringRef fileExtension = (__bridge CFStringRef )[referenceUrl pathExtension ];
84
+ - (void ) getMimeTypeFromReferenceUrl : (NSURL *)url
85
+ resolver : (RCTPromiseResolveBlock)resolve
86
+ rejecter : (RCTPromiseRejectBlock)reject {
87
+ NSMutableDictionary *ListOfMimeTypes = [self createListOfMIMETypes ];
88
+ CFStringRef fileExtension = (__bridge CFStringRef )[url pathExtension ];
163
89
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag (kUTTagClassFilenameExtension , fileExtension, NULL );
164
90
CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType );
165
91
@@ -179,6 +105,7 @@ @implementation FileUtils
179
105
}
180
106
}
181
107
108
+
182
109
/* *
183
110
* Gets the original date time of the video or image file based on the path passed in. The timestamp is retrieved from the Exif data on the
184
111
* image or video file. Note: Either asset-libarary path or full file path may be passed in.
@@ -298,4 +225,107 @@ @implementation FileUtils
298
225
return ;
299
226
}
300
227
228
+ - (NSMutableDictionary * ) createListOfMIMETypes {
229
+ NSMutableDictionary *ListOfMimeTypes = [[NSMutableDictionary alloc ] init ];
230
+ [ListOfMimeTypes setObject: @" image/jpeg" forKey: @" jpg" ];
231
+ [ListOfMimeTypes setObject: @" text/html" forKey: @" html" ];
232
+ [ListOfMimeTypes setObject: @" text/htm" forKey: @" html" ];
233
+ [ListOfMimeTypes setObject: @" text/html" forKey: @" shtml" ];
234
+ [ListOfMimeTypes setObject: @" text/css" forKey: @" css" ];
235
+ [ListOfMimeTypes setObject: @" text/xml" forKey: @" xml" ];
236
+ [ListOfMimeTypes setObject: @" image/gif" forKey: @" gif" ];
237
+ [ListOfMimeTypes setObject: @" image/jpeg" forKey: @" jpeg" ];
238
+ [ListOfMimeTypes setObject: @" image/jpeg" forKey: @" jpg" ];
239
+ [ListOfMimeTypes setObject: @" image/heic" forKey: @" heic" ];
240
+ [ListOfMimeTypes setObject: @" image/heif" forKey: @" heif" ];
241
+ [ListOfMimeTypes setObject: @" application/javascript" forKey: @" js" ];
242
+ [ListOfMimeTypes setObject: @" application/atom+xml" forKey: @" atom" ];
243
+ [ListOfMimeTypes setObject: @" application/rss+xml" forKey: @" rss" ];
244
+ [ListOfMimeTypes setObject: @" text/mathml" forKey: @" mml" ];
245
+ [ListOfMimeTypes setObject: @" text/plain" forKey: @" txt" ];
246
+ [ListOfMimeTypes setObject: @" text/vnd.sun.j2me.app-descriptor" forKey: @" jad" ];
247
+ [ListOfMimeTypes setObject: @" text/vnd.wap.wml" forKey: @" wml" ];
248
+ [ListOfMimeTypes setObject: @" text/x-component" forKey: @" htc" ];
249
+ [ListOfMimeTypes setObject: @" image/png" forKey: @" png" ];
250
+ [ListOfMimeTypes setObject: @" image/tiff" forKey: @" tif" ];
251
+ [ListOfMimeTypes setObject: @" image/tiff" forKey: @" tiff" ];
252
+ [ListOfMimeTypes setObject: @" image/vnd.wap.wbmp" forKey: @" wbmp" ];
253
+ [ListOfMimeTypes setObject: @" image/x-icon" forKey: @" ico" ];
254
+ [ListOfMimeTypes setObject: @" image/x-jng" forKey: @" jng" ];
255
+ [ListOfMimeTypes setObject: @" image/x-ms-bmp" forKey: @" bmp" ];
256
+ [ListOfMimeTypes setObject: @" image/svg+xml" forKey: @" svg" ];
257
+ [ListOfMimeTypes setObject: @" image/svg+xml" forKey: @" svgz" ];
258
+ [ListOfMimeTypes setObject: @" image/webp" forKey: @" webp" ];
259
+ [ListOfMimeTypes setObject: @" application/font-woff" forKey: @" woff" ];
260
+ [ListOfMimeTypes setObject: @" application/java-archive" forKey: @" jar" ];
261
+ [ListOfMimeTypes setObject: @" application/java-archive" forKey: @" war" ];
262
+ [ListOfMimeTypes setObject: @" application/java-archive" forKey: @" ear" ];
263
+ [ListOfMimeTypes setObject: @" application/json" forKey: @" json" ];
264
+ [ListOfMimeTypes setObject: @" application/mac-binhex40" forKey: @" hqx" ];
265
+ [ListOfMimeTypes setObject: @" application/msword" forKey: @" doc" ];
266
+ [ListOfMimeTypes setObject: @" application/pdf" forKey: @" pdf" ];
267
+ [ListOfMimeTypes setObject: @" application/postscript" forKey: @" ps" ];
268
+ [ListOfMimeTypes setObject: @" application/postscript" forKey: @" eps" ];
269
+ [ListOfMimeTypes setObject: @" application/postscript" forKey: @" ai" ];
270
+ [ListOfMimeTypes setObject: @" application/rtf" forKey: @" rtf" ];
271
+ [ListOfMimeTypes setObject: @" application/vnd.apple.mpegurl" forKey: @" m3u8" ];
272
+ [ListOfMimeTypes setObject: @" application/vnd.ms-excel" forKey: @" xls" ];
273
+ [ListOfMimeTypes setObject: @" application/vnd.ms-fontobject" forKey: @" eot" ];
274
+ [ListOfMimeTypes setObject: @" application/vnd.ms-powerpoint" forKey: @" ppt" ];
275
+ [ListOfMimeTypes setObject: @" application/vnd.wap.wmlc" forKey: @" wmlc" ];
276
+ [ListOfMimeTypes setObject: @" application/vnd.google-earth.kml+xml" forKey: @" kml" ];
277
+ [ListOfMimeTypes setObject: @" application/vnd.google-earth.kmz" forKey: @" kmz" ];
278
+ [ListOfMimeTypes setObject: @" application/x-7z-compressed" forKey: @" 7z" ];
279
+ [ListOfMimeTypes setObject: @" application/x-cocoa" forKey: @" cco" ];
280
+ [ListOfMimeTypes setObject: @" application/x-java-archive-diff" forKey: @" jardiff" ];
281
+ [ListOfMimeTypes setObject: @" application/x-java-jnlp-file" forKey: @" jnlp" ];
282
+ [ListOfMimeTypes setObject: @" application/x-makeself" forKey: @" run" ];
283
+ [ListOfMimeTypes setObject: @" application/x-perl" forKey: @" pl" ];
284
+ [ListOfMimeTypes setObject: @" application/x-perl" forKey: @" pm" ];
285
+ [ListOfMimeTypes setObject: @" application/x-pilot" forKey: @" prc" ];
286
+ [ListOfMimeTypes setObject: @" application/x-pilot" forKey: @" pdb" ];
287
+ [ListOfMimeTypes setObject: @" application/x-rar-compressed" forKey: @" rar" ];
288
+ [ListOfMimeTypes setObject: @" application/x-redhat-package-manager" forKey: @" rpm" ];
289
+ [ListOfMimeTypes setObject: @" application/x-sea" forKey: @" sea" ];
290
+ [ListOfMimeTypes setObject: @" application/x-shockwave-flash" forKey: @" swf" ];
291
+ [ListOfMimeTypes setObject: @" application/x-stuffit" forKey: @" sit" ];
292
+ [ListOfMimeTypes setObject: @" application/x-tcl" forKey: @" tcl" ];
293
+ [ListOfMimeTypes setObject: @" application/x-tcl" forKey: @" tk" ];
294
+ [ListOfMimeTypes setObject: @" application/x-x509-ca-cert" forKey: @" der" ];
295
+ [ListOfMimeTypes setObject: @" application/x-x509-ca-cert" forKey: @" pem" ];
296
+ [ListOfMimeTypes setObject: @" application/x-x509-ca-cert" forKey: @" crt" ];
297
+ [ListOfMimeTypes setObject: @" application/x-xpinstall" forKey: @" xpi" ];
298
+ [ListOfMimeTypes setObject: @" application/xhtml+xml" forKey: @" xhtml" ];
299
+ [ListOfMimeTypes setObject: @" application/xspf+xml" forKey: @" xspf" ];
300
+ [ListOfMimeTypes setObject: @" application/zip" forKey: @" zip" ];
301
+ [ListOfMimeTypes setObject: @" application/epub+zip" forKey: @" epub" ];
302
+ [ListOfMimeTypes setObject: @" application/vnd.openxmlformats-officedocument.wordprocessingml.document" forKey: @" docx" ];
303
+ [ListOfMimeTypes setObject: @" application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" forKey: @" xlsx" ];
304
+ [ListOfMimeTypes setObject: @" application/vnd.openxmlformats-officedocument.presentationml.presentation" forKey: @" pptx" ];
305
+ [ListOfMimeTypes setObject: @" audio/midi" forKey: @" mid" ];
306
+ [ListOfMimeTypes setObject: @" audio/midi" forKey: @" midi" ];
307
+ [ListOfMimeTypes setObject: @" audio/midi" forKey: @" kar" ];
308
+ [ListOfMimeTypes setObject: @" audio/mpeg" forKey: @" mp3" ];
309
+ [ListOfMimeTypes setObject: @" audio/ogg" forKey: @" ogg" ];
310
+ [ListOfMimeTypes setObject: @" audio/x-m4a" forKey: @" m4a" ];
311
+ [ListOfMimeTypes setObject: @" audio/x-realaudio" forKey: @" ra" ];
312
+ [ListOfMimeTypes setObject: @" video/3gpp" forKey: @" 3gpp" ];
313
+ [ListOfMimeTypes setObject: @" video/3gpp" forKey: @" 3gp" ];
314
+ [ListOfMimeTypes setObject: @" video/mp2t" forKey: @" ts" ];
315
+ [ListOfMimeTypes setObject: @" video/mp4" forKey: @" mp4" ];
316
+ [ListOfMimeTypes setObject: @" video/mpeg" forKey: @" mpeg" ];
317
+ [ListOfMimeTypes setObject: @" video/mpeg" forKey: @" mpg" ];
318
+ [ListOfMimeTypes setObject: @" video/quicktime" forKey: @" mov" ];
319
+ [ListOfMimeTypes setObject: @" video/webm" forKey: @" webm" ];
320
+ [ListOfMimeTypes setObject: @" video/x-flv" forKey: @" flv" ];
321
+ [ListOfMimeTypes setObject: @" video/x-m4v" forKey: @" m4v" ];
322
+ [ListOfMimeTypes setObject: @" video/x-mng" forKey: @" mng" ];
323
+ [ListOfMimeTypes setObject: @" video/x-ms-asf" forKey: @" asx" ];
324
+ [ListOfMimeTypes setObject: @" video/x-ms-asf" forKey: @" asf" ];
325
+ [ListOfMimeTypes setObject: @" video/x-ms-wmv" forKey: @" wmv" ];
326
+ [ListOfMimeTypes setObject: @" video/x-msvideo" forKey: @" avi" ];
327
+
328
+ return ListOfMimeTypes;
329
+ }
330
+
301
331
@end
0 commit comments