Created
September 26, 2012 20:36
-
-
Save michaelmior/3790439 to your computer and use it in GitHub Desktop.
Override of requestWithMethod:path:parameters:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters | |
{ | |
NSURL *url = [NSURL URLWithString:path relativeToURL:self.baseURL]; | |
OAConsumer *consumer = [[OAConsumer alloc] initWithKey:OAUTH_CONSUMER_KEY secret:OAUTH_CONSUMER_SECRET]; | |
OAHMAC_SHA1SignatureProvider *provider = [[OAHMAC_SHA1SignatureProvider alloc] init]; | |
OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url consumer:consumer token:self.token realm:@"Bunch API" signatureProvider:provider]; | |
[request setHTTPMethod:method]; | |
[request setAllHTTPHeaderFields:self.defaultHeaders]; | |
if ([method isEqualToString:@"GET"] || [method isEqualToString:@"HEAD"]) { | |
[request setHTTPShouldUsePipelining:YES]; | |
} | |
if (parameters) { | |
if ([method isEqualToString:@"GET"] || [method isEqualToString:@"HEAD"] || [method isEqualToString:@"DELETE"]) { | |
url = [NSURL URLWithString:[[url absoluteString] stringByAppendingFormat:[path rangeOfString:@"?"].location == NSNotFound ? @"?%@" : @"&%@", AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding)]]; | |
[request setURL:url]; | |
} else { | |
NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding)); | |
switch (self.parameterEncoding) { | |
case AFFormURLParameterEncoding:; | |
[request setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; | |
[request setHTTPBody:[AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding) dataUsingEncoding:self.stringEncoding]]; | |
break; | |
case AFJSONParameterEncoding:; | |
[request setValue:[NSString stringWithFormat:@"application/json; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; | |
[request setHTTPBody:[AFJSONStringFromParameters(parameters) dataUsingEncoding:self.stringEncoding]]; | |
break; | |
case AFPropertyListParameterEncoding:; | |
[request setValue:[NSString stringWithFormat:@"application/x-plist; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; | |
[request setHTTPBody:[AFPropertyListStringFromParameters(parameters) dataUsingEncoding:self.stringEncoding]]; | |
break; | |
} | |
} | |
} | |
[request prepare]; | |
return request; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment