From d113809f7cb72a5bbfb0434c43056b61296c9519 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Mon, 19 Dec 2011 17:11:24 -0500 Subject: [PATCH] support POSTing a dictionary of key/value pairs --- Marshmallows/MMHTTPClient.h | 2 ++ Marshmallows/MMHTTPClient.m | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Marshmallows/MMHTTPClient.h b/Marshmallows/MMHTTPClient.h index 90ea68d..4489264 100644 --- a/Marshmallows/MMHTTPClient.h +++ b/Marshmallows/MMHTTPClient.h @@ -28,6 +28,7 @@ + (MMHTTPRequest *) getImage: (NSString *)url then: (MMHTTPImageCallback)callback; + (MMHTTPRequest *) getText: (NSString *)url then: (MMHTTPTextCallback)callback; + (MMHTTPRequest *) post: (NSString *)url then: (MMHTTPCallback)callback; ++ (MMHTTPRequest *) post: (NSString *)url fields: (NSDictionary *)fields then: (MMHTTPCallback)callback; + (MMHTTPRequest *) post: (NSString *)url data: (NSData *)data then: (MMHTTPCallback)callback; + (MMHTTPRequest *) put: (NSString *)url data: (NSData *)data then: (MMHTTPCallback)callback; + (MMHTTPRequest *) delete: (NSString *)url then: (MMHTTPCallback)callback; @@ -44,6 +45,7 @@ - (MMHTTPRequest *) get: (NSString *)url then: (MMHTTPCallback)callback; - (MMHTTPRequest *) getImage: (NSString *)url then: (MMHTTPImageCallback)callback; - (MMHTTPRequest *) getText: (NSString *)url then: (MMHTTPTextCallback)callback; +- (MMHTTPRequest *) post: (NSString *)url fields: (NSDictionary *)fields then: (MMHTTPCallback)callback; - (MMHTTPRequest *) post: (NSString *)url then: (MMHTTPCallback)callback; - (MMHTTPRequest *) post: (NSString *)url data: (NSData *)data then: (MMHTTPCallback)callback; - (MMHTTPRequest *) put: (NSString *)url data: (NSData *)data then: (MMHTTPCallback)callback; diff --git a/Marshmallows/MMHTTPClient.m b/Marshmallows/MMHTTPClient.m index 7f49330..76510b8 100644 --- a/Marshmallows/MMHTTPClient.m +++ b/Marshmallows/MMHTTPClient.m @@ -7,7 +7,7 @@ // #import "MMHTTPClient.h" -#import "NSString+sanity.h" +#import "NSString+marshmallows.h" MMHTTPClient *_client; @@ -98,6 +98,11 @@ NSString *JoinURLComponents(NSString *first, va_list args) return [[self sharedClient] post: url then: callback]; } ++ (MMHTTPRequest *) post: (NSString *)url fields: (NSDictionary *)fields then: (MMHTTPCallback)callback +{ + return [[self sharedClient] post: url fields: fields then: callback]; +} + + (MMHTTPRequest *) post: (NSString *)url data: (NSData *)data then: (MMHTTPCallback)callback { return [[self sharedClient] post: url data: data then: callback]; @@ -188,6 +193,18 @@ NSString *JoinURLComponents(NSString *first, va_list args) return [self request: options then: callback]; } +- (MMHTTPRequest *) post: (NSString *)url fields: (NSDictionary *)fields then: (MMHTTPCallback)callback +{ + NSMutableArray *parts = [NSMutableArray array]; + NSString *value; + for (NSString *key in [fields keyEnumerator]) { + value = [fields objectForKey: key]; + [parts addObject: [NSString stringWithFormat: @"%@=%@", [key stringByURLEncoding], [value stringByURLEncoding]]]; + } + NSString *body = [parts componentsJoinedByString: @"&"]; + return [self post: url data: [body dataUsingEncoding: NSUTF8StringEncoding] then: callback]; +} + - (MMHTTPRequest *) post: (NSString *)url data: (NSData *)data then: (MMHTTPCallback)callback { NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: