Skip to content

Instantly share code, notes, and snippets.

@sag333ar
Created March 3, 2014 06:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sag333ar/9319531 to your computer and use it in GitHub Desktop.
Save sag333ar/9319531 to your computer and use it in GitHub Desktop.
#import "API_Request.h"
#import "SessionDelegate.h"
NSMutableURLRequest * generateRequest(NSURL *URL, NSString *postString) {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request setHTTPMethod:@"POST"];
NSData *postData = [postString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
return request;
}
void _invokeWithRequest(NSURL *url, NSString *postString, NSString *pathToStore,completionHandler completionHandler) {
NSMutableURLRequest* request = generateRequest(url, postString);
if([Utility isReachableToLocalNetwork]){
[SessionDelegate invokeAPIRequest:request completionHandler:^(NSData *data, NSError *error) {
if(!error) {
// NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// NSLog(@"Response is %@",str);
NSError *error2 = nil;
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error2];
if(!error2 && jsonData) {
completionHandler(jsonData,nil);
if([jsonData valueForKey:kAPI_Response_error_code] && [[jsonData valueForKey:kAPI_Response_error_code] integerValue]==0) {
[jsonData writeToFile:pathToStore atomically:YES];
}
} else {
completionHandler(nil,[error2 description]);
}
} else {
completionHandler(nil,[error description]);
}
}];
} else {
if(pathToStore && pathToStore.length && [[NSFileManager defaultManager] fileExistsAtPath:pathToStore]) {
NSDictionary *dFromFile = [NSDictionary dictionaryWithContentsOfFile:pathToStore];
completionHandler(dFromFile,@"Error");
} else {
completionHandler(nil, @"Error");
}
}
}
void addKeyValuePair(NSString *strKey, NSString *strValue, NSMutableDictionary *dOfData) {
if(strValue && strValue.length) [dOfData setObject:strValue forKey:strKey];
}
NSString *stringForRequest(NSDictionary *dForRequest) {
NSMutableString *string = [NSMutableString string];
for (NSString *key in dForRequest) {
[string appendFormat:@"&%@=%@",key,[dForRequest valueForKey:key]];
}
return [string stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"&"]];
}
#define vAPI_Request_Device_Type @"1"//For iPhone
#define vAPI_Request_Device_Width [NSString stringWithFormat:@"%.0f",[[UIScreen mainScreen] bounds].size.width]
#define vAPI_Request_Device_Height [NSString stringWithFormat:@"%.0f",[[UIScreen mainScreen] bounds].size.height]
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// 00 Cache & get image
void _00_Image_Request(NSString *strImageURL, imageCompletionHandler imageCompletionHandler) {
NSURL *imageURL = [NSURL URLWithString:strImageURL];
strImageURL = [strImageURL stringByReplacingOccurrencesOfString:@"/" withString:@"_"];
strImageURL = [strImageURL stringByReplacingOccurrencesOfString:@":" withString:@"_"];
strImageURL = [strImageURL stringByReplacingOccurrencesOfString:@"." withString:@"_"];
NSString *uniquePath = [NSTemporaryDirectory() stringByAppendingPathComponent: strImageURL];
uniquePath = [uniquePath stringByAppendingPathExtension:@"png"];
if(![[NSFileManager defaultManager] fileExistsAtPath: uniquePath]) {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:imageURL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:API_RQST_TIME_OUT];
[SessionDelegate invokeAPIRequest:request completionHandler:^(NSData *data, NSError *error) {
if(!error) {
UIImage *image = [UIImage imageWithData:data];
[data writeToFile:uniquePath atomically:YES];
imageCompletionHandler(image,nil);
} else {
imageCompletionHandler(nil,error);
}
}];
} else {
UIImage *image = [UIImage imageWithContentsOfFile:uniquePath];
imageCompletionHandler(image,(image)?nil:[NSError errorWithDomain:@"Image not found" code:101 userInfo:nil]);
}
}
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//device_token,device_type,device_display_width,device_display_height
#pragma mark - 01 API Authenticate
NSString *_01_API_Request_Authenticate_POST(NSString *strEmail, NSString *strMobile, NSString *strPassword, NSString *lat, NSString *lng, NSString *langId) {
NSMutableDictionary *dOfPost = [NSMutableDictionary dictionary];
addKeyValuePair(kAPI_Request_email, strEmail, dOfPost);
addKeyValuePair(kAPI_Request_mobile, strMobile, dOfPost);
addKeyValuePair(kAPI_Request_password, strPassword, dOfPost);
addKeyValuePair(kAPI_Request_lat, lat, dOfPost);
addKeyValuePair(kAPI_Request_lng, lng, dOfPost);
addKeyValuePair(kAPI_Request_language_id, langId, dOfPost);
addKeyValuePair(kAPI_Request_device_token, ([Utility getUserPref:USER_DEVICE_TOKEN])?[Utility getUserPref:USER_DEVICE_TOKEN]:@"NO TOKEN", dOfPost);
addKeyValuePair(kAPI_Request_device_device_type, vAPI_Request_Device_Type, dOfPost);
addKeyValuePair(kAPI_Request_device_display_width, vAPI_Request_Device_Width, dOfPost);
addKeyValuePair(kAPI_Request_device_display_height, vAPI_Request_Device_Height, dOfPost);
// addKeyValuePair(kAPI_Request_session_id, [Utility getUserPref:kAPI_Request_session_id], dOfPost);
return stringForRequest(dOfPost);
}
void _01_API_Request_Authenticate(NSString *strEmail, NSString *strMobile, NSString *strPassword, NSString *lat, NSString *lng, NSString *languageid, completionHandler completionHandler) {
_invokeWithRequest(k_01_API_Authenticate_URL, _01_API_Request_Authenticate_POST(strEmail, strMobile, strPassword, lat, lng, languageid), k_LOCAL_UserProfile_Path, completionHandler);
}
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#pragma mark - 02 API Register
NSString *_02_API_Request_Register_POST(NSString *strName, NSString *strEmail, NSString *strMobile, NSString *strPassword, NSString *lat, NSString *lng, NSString *langId) {
NSMutableDictionary *dOfPost = [NSMutableDictionary dictionary];
addKeyValuePair(k_02_API_Register_name, strName, dOfPost);
addKeyValuePair(kAPI_Request_email, strEmail, dOfPost);
addKeyValuePair(kAPI_Request_mobile, strMobile, dOfPost);
addKeyValuePair(kAPI_Request_password, strPassword, dOfPost);
addKeyValuePair(kAPI_Request_lat, lat, dOfPost);
addKeyValuePair(kAPI_Request_lng, lng, dOfPost);
addKeyValuePair(kAPI_Request_language_id, langId, dOfPost);
addKeyValuePair(kAPI_Request_device_token, ([Utility getUserPref:USER_DEVICE_TOKEN])?[Utility getUserPref:USER_DEVICE_TOKEN]:@"NO TOKEN", dOfPost);
addKeyValuePair(kAPI_Request_device_device_type, vAPI_Request_Device_Type, dOfPost);
addKeyValuePair(kAPI_Request_device_display_width, vAPI_Request_Device_Width, dOfPost);
addKeyValuePair(kAPI_Request_device_display_height, vAPI_Request_Device_Height, dOfPost);
addKeyValuePair(kAPI_Request_session_id, [Utility getUserPref:kAPI_Request_session_id], dOfPost);
return stringForRequest(dOfPost);
}
void _02_API_Request_Register(NSString *strName, NSString *strEmail, NSString *strMobile, NSString *strPassword, NSString *lat, NSString *lng, NSString *langId, completionHandler completionHandler) {
_invokeWithRequest(k_02_API_Register_URL, _02_API_Request_Register_POST(strName, strEmail, strMobile, strPassword, lat, lng, langId), k_LOCAL_UserProfile_Path, completionHandler);
}
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#pragma mark - 03 API Register via social
NSString *_03_API_Request_RegisterSocial_POST(NSString* socialID, NSString *socialType, NSString *strName, NSString *strEmail, NSString *strMobile, NSString *lat, NSString *lng, NSString *langId) {
NSMutableDictionary *dOfPost = [NSMutableDictionary dictionary];
addKeyValuePair(k_03_API_RegisterSocial_social_id, socialID, dOfPost);
addKeyValuePair(k_03_API_RegisterSocial_social_type, socialType, dOfPost);
addKeyValuePair(k_02_API_Register_name, strName, dOfPost);
addKeyValuePair(kAPI_Request_email, strEmail, dOfPost);
addKeyValuePair(kAPI_Request_mobile, strMobile, dOfPost);
addKeyValuePair(kAPI_Request_lat, lat, dOfPost);
addKeyValuePair(kAPI_Request_lng, lng, dOfPost);
addKeyValuePair(kAPI_Request_language_id, langId, dOfPost);
addKeyValuePair(kAPI_Request_device_token, ([Utility getUserPref:USER_DEVICE_TOKEN])?[Utility getUserPref:USER_DEVICE_TOKEN]:@"NO TOKEN", dOfPost);
addKeyValuePair(kAPI_Request_device_device_type, vAPI_Request_Device_Type, dOfPost);
addKeyValuePair(kAPI_Request_device_display_width, vAPI_Request_Device_Width, dOfPost);
addKeyValuePair(kAPI_Request_device_display_height, vAPI_Request_Device_Height, dOfPost);
addKeyValuePair(kAPI_Request_session_id, [Utility getUserPref:kAPI_Request_session_id], dOfPost);
return stringForRequest(dOfPost);
}
void _03_API_Request_RegisterSocial(NSString* socialID, NSString *socialType, NSString *strName, NSString *strEmail, NSString *strMobile, NSString *lat, NSString *lng, NSString *langId, completionHandler completionHandler) {
_invokeWithRequest(k_03_API_RegisterSocial_URL, _03_API_Request_RegisterSocial_POST(socialID, socialType, strName, strEmail, strMobile, lat, lng, langId), k_LOCAL_UserProfile_Path, completionHandler);
}
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#pragma mark - 04 API Forgot Password
NSString *_04_API_Request_ForgotPassword_POST(NSString *strEmail) {
NSMutableDictionary *dOfPost = [NSMutableDictionary dictionary];
addKeyValuePair(kAPI_Request_email, strEmail, dOfPost);
return stringForRequest(dOfPost);
}
void _04_API_Request_ForgotPassword(NSString *strEmail, completionHandler completionHandler) {
_invokeWithRequest(k_04_API_ForgotPassword_URL, _04_API_Request_ForgotPassword_POST(strEmail), nil, completionHandler);
}
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment