- fix for unescaped brackets in params values

This commit is contained in:
Kra Larivain 2013-04-15 17:45:36 -07:00
parent b3267b85b0
commit ae4981eef1

View file

@ -80,11 +80,13 @@ static NSString * AFBase64EncodedStringFromString(NSString *string) {
return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding];
}
static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NSString *string, NSStringEncoding encoding) {
static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NSString *string, NSStringEncoding encoding, BOOL isValue) {
static NSString * const kAFCharactersToBeEscaped = @":/?&=;+!@#$()~',*";
static NSString * const kAFCharactersToLeaveUnescaped = @"[].";
return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescaped, (__bridge CFStringRef)kAFCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding));
static NSString * const kAFParamNameCharactersToLeaveUnescaped = @"[].";
static NSString * const kAFParamValueCharactersToLeaveUnescaped = @"";
NSString *unescaped = isValue ? kAFParamValueCharactersToLeaveUnescaped : kAFParamNameCharactersToLeaveUnescaped;
return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)unescaped, (__bridge CFStringRef)kAFCharactersToBeEscaped, CFStringConvertNSStringEncodingToEncoding(encoding));
}
#pragma mark -
@ -116,9 +118,9 @@ static NSString * AFPercentEscapedQueryStringPairMemberFromStringWithEncoding(NS
- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding {
if (!self.value || [self.value isEqual:[NSNull null]]) {
return AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding);
return AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding, NO);
} else {
return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.value description], stringEncoding)];
return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.field description], stringEncoding, NO), AFPercentEscapedQueryStringPairMemberFromStringWithEncoding([self.value description], stringEncoding, YES)];
}
}