diff --git a/src/Util/MIMETypeUtil.h b/src/Util/MIMETypeUtil.h index dcfa982a4..5f34a2969 100644 --- a/src/Util/MIMETypeUtil.h +++ b/src/Util/MIMETypeUtil.h @@ -1,4 +1,6 @@ -// Copyright © 2016 Open Whisper Systems. All rights reserved. +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// extern NSString *const OWSMimeTypeApplicationOctetStream; extern NSString *const OWSMimeTypeImagePng; @@ -44,4 +46,9 @@ extern NSString *const OWSMimeTypeImagePng; + (BOOL)getIsSupportedTypeFromImage:(UIImage *)image; #endif ++ (NSSet *)supportedVideoUTITypes; ++ (NSSet *)supportedAudioUTITypes; ++ (NSSet *)supportedImageUTITypes; ++ (NSSet *)supportedAnimatedImageUTITypes; + @end diff --git a/src/Util/MIMETypeUtil.m b/src/Util/MIMETypeUtil.m index 420abece4..1786d7897 100644 --- a/src/Util/MIMETypeUtil.m +++ b/src/Util/MIMETypeUtil.m @@ -1,6 +1,13 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + #import "MIMETypeUtil.h" #if TARGET_OS_IPHONE #import "UIImage+contentTypes.h" +#import +#else +#import #endif NSString *const OWSMimeTypeApplicationOctetStream = @"application/octet-stream"; @@ -303,4 +310,40 @@ NSString *const OWSMimeTypeImagePng = @"image/png"; #endif ++ (NSString *)utiTypeForMIMEType:(NSString *)mimeType +{ + CFStringRef utiType + = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (__bridge CFStringRef)mimeType, NULL); + return (__bridge_transfer NSString *)utiType; +} + ++ (NSSet *)utiTypesForMIMETypes:(NSArray *)mimeTypes +{ + NSMutableSet *result = [NSMutableSet new]; + for (NSString *mimeType in mimeTypes) { + [result addObject:[self utiTypeForMIMEType:mimeType]]; + } + return result; +} + ++ (NSSet *)supportedVideoUTITypes +{ + return [self utiTypesForMIMETypes:[self supportedVideoMIMETypesToExtensionTypes].allKeys]; +} + ++ (NSSet *)supportedAudioUTITypes +{ + return [self utiTypesForMIMETypes:[self supportedAudioMIMETypesToExtensionTypes].allKeys]; +} + ++ (NSSet *)supportedImageUTITypes +{ + return [self utiTypesForMIMETypes:[self supportedImageMIMETypesToExtensionTypes].allKeys]; +} + ++ (NSSet *)supportedAnimatedImageUTITypes +{ + return [self utiTypesForMIMETypes:[self supportedAnimatedMIMETypesToExtensionTypes].allKeys]; +} + @end