Skip to content

Instantly share code, notes, and snippets.

@Arcovv
Created September 22, 2018 03:14
Show Gist options
  • Save Arcovv/de5d0833aefc3fb0827924d9029bd9fd to your computer and use it in GitHub Desktop.
Save Arcovv/de5d0833aefc3fb0827924d9029bd9fd to your computer and use it in GitHub Desktop.
Get mime type using MobileCoreServices framework
import MobileCoreServices
fileprivate let defaultMimeType = "application/octet-stream"
protocol PathExtensionable {
var pathExtension: String? { get }
}
extension URL : PathExtensionable {
var pathExtension: String? {
return NSURL(fileURLWithPath: self.path).pathExtension
}
}
extension String : PathExtensionable {
var pathExtension: String? {
return URL(string: self)?.pathExtension
}
}
extension PathExtensionable {
func mimeType() -> String {
guard let pathExt = pathExtension else {
return defaultMimeType
}
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExt as CFString, nil)?.takeRetainedValue() {
if let mimeType = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimeType as String
}
}
return defaultMimeType
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment