Skip to content

Commit f388b97

Browse files
committed
Storage
1 parent c8fdeb8 commit f388b97

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

FirebaseStorage/Sources/Internal/StorageUtils.swift

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
// limitations under the License.
1414

1515
import Foundation
16+
private import UniformTypeIdentifiers
17+
1618
#if os(iOS) || os(tvOS) || os(visionOS)
1719
import MobileCoreServices
1820
#elseif os(macOS) || os(watchOS)
@@ -71,21 +73,28 @@ class StorageUtils {
7173
return string.addingPercentEncoding(withAllowedCharacters: allowedSet)!
7274
}
7375

74-
class func MIMETypeForExtension(_ fileExtension: String?) -> String {
75-
guard let fileExtension = fileExtension else {
76+
static func MIMETypeForExtension(_ fileExtension: String?) -> String {
77+
guard let fileExtension else {
7678
return "application/octet-stream"
7779
}
78-
79-
if let type = UTTypeCreatePreferredIdentifierForTag(
80-
kUTTagClassFilenameExtension,
81-
fileExtension as NSString,
82-
nil
83-
)?.takeRetainedValue() {
84-
if let mimeType = UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType)?
85-
.takeRetainedValue() {
86-
return mimeType as String
80+
// TODO: Remove `else` when min. supported macOS is 11.0+.
81+
if #available(macOS 11.0, iOS 14.0, tvOS 14.0, watchOS 7.0, *) {
82+
guard let mimeType = UTType(filenameExtension: fileExtension)?.preferredMIMEType else {
83+
return "application/octet-stream"
8784
}
85+
return mimeType
86+
} else {
87+
if let type = UTTypeCreatePreferredIdentifierForTag(
88+
kUTTagClassFilenameExtension,
89+
fileExtension as NSString,
90+
nil
91+
)?.takeRetainedValue() {
92+
if let mimeType = UTTypeCopyPreferredTagWithClass(type, kUTTagClassMIMEType)?
93+
.takeRetainedValue() {
94+
return mimeType as String
95+
}
96+
}
97+
return "application/octet-stream"
8898
}
89-
return "application/octet-stream"
9099
}
91100
}

0 commit comments

Comments
 (0)