Merge branch 'master' of https://github.com/peymano/AFNetworking into peymano-master

This commit is contained in:
Mattt Thompson 2012-09-24 07:44:34 -07:00
commit 7147ef61bb

View file

@ -37,33 +37,34 @@
#endif #endif
NSSet * AFContentTypesFromHTTPHeader(NSString *string) { NSSet * AFContentTypesFromHTTPHeader(NSString *string) {
static NSCharacterSet *_skippedCharacterSet = nil; static NSCharacterSet *_trimCharacterSet = nil;
static dispatch_once_t onceToken; static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ dispatch_once(&onceToken, ^{
_skippedCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@" ,"]; _trimCharacterSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
}); });
if (!string) { if (!string) {
return nil; return nil;
} }
NSScanner *scanner = [NSScanner scannerWithString:string]; NSArray *mediaRanges = [string componentsSeparatedByString:@","];
scanner.charactersToBeSkipped = _skippedCharacterSet;
NSMutableSet *mutableContentTypes = [NSMutableSet setWithCapacity:mediaRanges.count];
NSMutableSet *mutableContentTypes = [NSMutableSet set];
while (![scanner isAtEnd]) { [mediaRanges enumerateObjectsUsingBlock:^(NSString *mediaRange, NSUInteger idx, BOOL *stop) {
NSString *contentType = nil;
if ([scanner scanUpToString:@";" intoString:&contentType]) { NSRange startOfParameters = [mediaRange rangeOfString:@";"];
[scanner scanUpToString:@"," intoString:nil]; if (startOfParameters.location != NSNotFound) {
} else { mediaRange = [mediaRange substringToIndex:startOfParameters.location];
[scanner scanUpToCharactersFromSet:_skippedCharacterSet intoString:&contentType]; }
}
mediaRange = [mediaRange stringByTrimmingCharactersInSet:_trimCharacterSet];
if (contentType) {
[mutableContentTypes addObject:contentType]; if (mediaRange.length > 0)
} [mutableContentTypes addObject:mediaRange];
}
}];
return [NSSet setWithSet:mutableContentTypes]; return [NSSet setWithSet:mutableContentTypes];
} }