Fixing a few things with AFRestClient multipart request functionality

This commit is contained in:
Mattt Thompson 2011-09-21 14:22:21 -05:00
parent 8b8605185b
commit 341153605f

View file

@ -37,7 +37,7 @@ static NSString * AFMultipartFormFinalBoundary() {
@interface AFMutableMultipartFormData : NSObject <AFMultipartFormDataProxy> { @interface AFMutableMultipartFormData : NSObject <AFMultipartFormDataProxy> {
@private @private
NSStringEncoding _stringEncoding; NSStringEncoding _stringEncoding;
NSMutableArray *_lines; NSMutableArray *_mutableLines;
} }
- (id)initWithStringEncoding:(NSStringEncoding)encoding; - (id)initWithStringEncoding:(NSStringEncoding)encoding;
@ -197,7 +197,7 @@ static NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSS
} }
NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil]; NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil];
__block AFMutableMultipartFormData *formData = [[AFMutableMultipartFormData alloc] init]; __block AFMutableMultipartFormData *formData = [[AFMutableMultipartFormData alloc] initWithStringEncoding:self.stringEncoding];
id key = nil; id key = nil;
NSEnumerator *enumerator = [parameters keyEnumerator]; NSEnumerator *enumerator = [parameters keyEnumerator];
@ -276,14 +276,14 @@ static NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSS
// multipart/form-data; see http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 // multipart/form-data; see http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2
@interface AFMutableMultipartFormData () @interface AFMutableMultipartFormData ()
@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; @property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding;
@property (readwrite, nonatomic, retain) NSMutableArray *lines; @property (readwrite, nonatomic, retain) NSMutableArray *mutableLines;
- (void)appendBlankLine; - (void)appendBlankLine;
@end @end
@implementation AFMutableMultipartFormData @implementation AFMutableMultipartFormData
@synthesize stringEncoding = _stringEncoding; @synthesize stringEncoding = _stringEncoding;
@synthesize lines = _lines; @synthesize mutableLines = _mutableLines;
- (id)initWithStringEncoding:(NSStringEncoding)encoding { - (id)initWithStringEncoding:(NSStringEncoding)encoding {
self = [super init]; self = [super init];
@ -292,25 +292,31 @@ static NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSS
} }
self.stringEncoding = encoding; self.stringEncoding = encoding;
self.lines = [NSMutableArray array]; self.mutableLines = [NSMutableArray array];
return self; return self;
} }
- (void)dealloc { - (void)dealloc {
[_lines release]; [_mutableLines release];
[super dealloc]; [super dealloc];
} }
- (NSData *)data { - (NSData *)data {
NSLog(@"DATA: %@", [[self.lines componentsJoinedByString:kAFMultipartFormLineDelimiter] stringByAppendingString:AFMultipartFormFinalBoundary()]); if ([self.mutableLines count] == 0) {
return nil;
}
return [[[[self.lines componentsJoinedByString:kAFMultipartFormLineDelimiter] stringByAppendingString:AFMultipartFormFinalBoundary()] stringByAppendingString:kAFMultipartFormLineDelimiter] dataUsingEncoding:self.stringEncoding]; return [[[[self.mutableLines componentsJoinedByString:kAFMultipartFormLineDelimiter] stringByAppendingString:kAFMultipartFormLineDelimiter] stringByAppendingString:AFMultipartFormFinalBoundary()] dataUsingEncoding:self.stringEncoding];
} }
#pragma mark - AFMultipartFormDataProxy #pragma mark - AFMultipartFormDataProxy
- (void)appendPartWithHeaders:(NSDictionary *)headers body:(NSData *)body { - (void)appendPartWithHeaders:(NSDictionary *)headers body:(NSData *)body {
if ([self.mutableLines count] > 0) {
[self appendString:AFMultipartFormEncapsulationBoundary()];
}
for (NSString *field in [headers allKeys]) { for (NSString *field in [headers allKeys]) {
[self appendString:[NSString stringWithFormat:@"%@: %@", field, [headers valueForKey:field]]]; [self appendString:[NSString stringWithFormat:@"%@: %@", field, [headers valueForKey:field]]];
} }
@ -339,7 +345,7 @@ static NSString * AFURLEncodedStringFromStringWithEncoding(NSString *string, NSS
} }
- (void)appendString:(NSString *)string { - (void)appendString:(NSString *)string {
[self.lines addObject:string]; [self.mutableLines addObject:string];
} }
- (void)appendBlankLine { - (void)appendBlankLine {