Created
March 3, 2014 06:33
-
-
Save sag333ar/9319531 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
#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