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

This commit is contained in:
Mattt Thompson 2012-03-09 14:01:56 -08:00
commit 749fe6ce77

View file

@ -109,23 +109,66 @@ NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSStringEn
return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, (CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)) autorelease]; return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, (CFStringRef)kAFLegalCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding)) autorelease];
} }
extern NSDictionary * AFQueryParametersFromParametersAtBaseKeyWithEncoding(id parameters, NSString *baseKey);
extern NSDictionary * AFQueryParametersFromParametersDictionaryAtBaseKeyWithEncoding(NSDictionary *parameters, NSString *baseKey);
extern NSDictionary * AFQueryParametersFromParametersArrayAtBaseKeyWithEncoding(NSArray *parameters, NSString *baseKey);
extern NSDictionary * AFQueryStringComponentFromParameterAtBaseKeyWithEncoding(id parameter, NSString *key);
NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding encoding) { NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding encoding) {
NSMutableArray *mutableParameterComponents = [NSMutableArray array]; NSMutableString *mutableQueryString = [NSMutableString string];
for (id key in [parameters allKeys]) { [AFQueryParametersFromParametersAtBaseKeyWithEncoding(parameters,nil) enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
id value = [parameters valueForKey:key]; [mutableQueryString appendFormat:@"%@=%@", AFURLEncodedStringFromStringWithEncoding([key description], encoding), AFURLEncodedStringFromStringWithEncoding([obj description], encoding)];
if ([value isKindOfClass:[NSArray class]]) { }];
NSString *arrayKey = AFURLEncodedStringFromStringWithEncoding([NSString stringWithFormat:@"%@[]", [key description]], encoding); return mutableQueryString;
for (id arrayValue in value) { }
NSString *component = [NSString stringWithFormat:@"%@=%@", arrayKey, AFURLEncodedStringFromStringWithEncoding([arrayValue description], encoding)];
[mutableParameterComponents addObject:component]; NSDictionary * AFQueryParametersFromParametersAtBaseKeyWithEncoding(id parameters, NSString *baseKey)
} {
} else { NSMutableDictionary *mutableParameterComponents = [NSMutableDictionary dictionary];
NSString *component = [NSString stringWithFormat:@"%@=%@", AFURLEncodedStringFromStringWithEncoding([key description], encoding), AFURLEncodedStringFromStringWithEncoding([value description], encoding)];
[mutableParameterComponents addObject:component]; if([parameters isKindOfClass:[NSDictionary class]]) {
} [mutableParameterComponents addEntriesFromDictionary:AFQueryParametersFromParametersDictionaryAtBaseKeyWithEncoding(parameters,baseKey)];
}
else if([parameters isKindOfClass:[NSArray class]]) {
[mutableParameterComponents addEntriesFromDictionary:AFQueryParametersFromParametersArrayAtBaseKeyWithEncoding(parameters,baseKey)];
}
else {
[mutableParameterComponents addEntriesFromDictionary:AFQueryStringComponentFromParameterAtBaseKeyWithEncoding(parameters,baseKey)];
} }
return [mutableParameterComponents componentsJoinedByString:@"&"]; return mutableParameterComponents;
}
NSDictionary * AFQueryParametersFromParametersDictionaryAtBaseKeyWithEncoding(NSDictionary *parameters, NSString *baseKey)
{
NSMutableDictionary *mutableParameterComponents = [NSMutableDictionary dictionary];
id key = nil;
NSEnumerator *enumerator = [parameters keyEnumerator];
while ((key = [enumerator nextObject])) {
NSString *newKey = baseKey?[NSString stringWithFormat:@"%@[%@]",baseKey,key]:key;
[mutableParameterComponents addEntriesFromDictionary:AFQueryParametersFromParametersAtBaseKeyWithEncoding([parameters valueForKey:key],newKey)];
}
return mutableParameterComponents;
}
NSDictionary * AFQueryParametersFromParametersArrayAtBaseKeyWithEncoding(NSArray *parameters, NSString *baseKey)
{
NSMutableDictionary *mutableParameterComponents = [NSMutableDictionary dictionary];
for (id value in parameters) {
NSString* newKey = [NSString stringWithFormat:@"%@[]",baseKey];
[mutableParameterComponents addEntriesFromDictionary:AFQueryParametersFromParametersAtBaseKeyWithEncoding(value,newKey)];
}
return mutableParameterComponents;
}
NSDictionary * AFQueryStringComponentFromParameterAtBaseKeyWithEncoding(id parameter, NSString *key)
{
return [NSDictionary dictionaryWithObject:parameter forKey:key];
} }
static NSString * AFJSONStringFromParameters(NSDictionary *parameters) { static NSString * AFJSONStringFromParameters(NSDictionary *parameters) {
@ -359,10 +402,7 @@ static void AFReachabilityCallback(SCNetworkReachabilityRef __unused target, SCN
NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil]; NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil];
__block AFMultipartFormData *formData = [[AFMultipartFormData alloc] initWithStringEncoding:self.stringEncoding]; __block AFMultipartFormData *formData = [[AFMultipartFormData alloc] initWithStringEncoding:self.stringEncoding];
id key = nil; [AFQueryParametersFromParametersDictionaryAtBaseKeyWithEncoding(parameters, nil) enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
NSEnumerator *enumerator = [parameters keyEnumerator];
while ((key = [enumerator nextObject])) {
id value = [parameters valueForKey:key];
NSData *data = nil; NSData *data = nil;
if ([value isKindOfClass:[NSData class]]) { if ([value isKindOfClass:[NSData class]]) {
@ -372,7 +412,7 @@ static void AFReachabilityCallback(SCNetworkReachabilityRef __unused target, SCN
} }
[formData appendPartWithFormData:data name:[key description]]; [formData appendPartWithFormData:data name:[key description]];
} }];
if (block) { if (block) {
block(formData); block(formData);