|
7 | 7 |
|
8 | 8 | import Foundation |
9 | 9 |
|
10 | | -#if canImport(MobileCoreServices) |
11 | | - import MobileCoreServices |
12 | | -#elseif canImport(CoreServices) |
13 | | - import CoreServices |
14 | | -#endif |
15 | | - |
16 | | -#if canImport(UniformTypeIdentifiers) |
17 | | - import UniformTypeIdentifiers |
18 | | - |
19 | | - func mimeType(forPathExtension pathExtension: String) -> String { |
20 | | - #if swift(>=5.9) |
21 | | - if #available(iOS 14, macOS 11, tvOS 14, watchOS 7, visionOS 1, *) { |
22 | | - return UTType(filenameExtension: pathExtension)?.preferredMIMEType |
23 | | - ?? "application/octet-stream" |
24 | | - } else { |
25 | | - if let id = UTTypeCreatePreferredIdentifierForTag( |
26 | | - kUTTagClassFilenameExtension, pathExtension as CFString, nil |
27 | | - )?.takeRetainedValue(), |
28 | | - let contentType = UTTypeCopyPreferredTagWithClass(id, kUTTagClassMIMEType)? |
29 | | - .takeRetainedValue() |
30 | | - { |
31 | | - return contentType as String |
32 | | - } |
33 | | - |
34 | | - return "application/octet-stream" |
35 | | - } |
36 | | - #else |
37 | | - if #available(iOS 14, macOS 11, tvOS 14, watchOS 7, *) { |
38 | | - return UTType(filenameExtension: pathExtension)?.preferredMIMEType |
39 | | - ?? "application/octet-stream" |
40 | | - } else { |
41 | | - if let id = UTTypeCreatePreferredIdentifierForTag( |
42 | | - kUTTagClassFilenameExtension, pathExtension as CFString, nil |
43 | | - )?.takeRetainedValue(), |
44 | | - let contentType = UTTypeCopyPreferredTagWithClass(id, kUTTagClassMIMEType)? |
45 | | - .takeRetainedValue() |
46 | | - { |
47 | | - return contentType as String |
48 | | - } |
49 | | - |
50 | | - return "application/octet-stream" |
51 | | - } |
52 | | - #endif |
53 | | - } |
54 | | -#else |
55 | | - |
56 | | - // MARK: - Private - Mime Type |
57 | | - |
58 | | - func mimeType(forPathExtension pathExtension: String) -> String { |
59 | | - #if canImport(CoreServices) || canImport(MobileCoreServices) |
60 | | - if let id = UTTypeCreatePreferredIdentifierForTag( |
61 | | - kUTTagClassFilenameExtension, pathExtension as CFString, nil |
62 | | - )?.takeRetainedValue(), |
63 | | - let contentType = UTTypeCopyPreferredTagWithClass(id, kUTTagClassMIMEType)? |
64 | | - .takeRetainedValue() |
65 | | - { |
66 | | - return contentType as String |
67 | | - } |
68 | | - #endif |
69 | | - |
70 | | - return "application/octet-stream" |
71 | | - } |
72 | | -#endif |
73 | | - |
74 | 10 | extension String { |
75 | 11 | var pathExtension: String { |
76 | 12 | (self as NSString).pathExtension |
|
0 commit comments