https://docs.google.com/file/d/0B-swXJjVKED1amM4OU10M2x5Nmc/edit?usp=sharing
https://docs.google.com/file/d/0B-swXJjVKED1eXBIWmpzWlFQeVU/edit?usp=sharing
HttpWrapper.h
Calling HttpWrapper method for Parsing :-
https://docs.google.com/file/d/0B-swXJjVKED1eXBIWmpzWlFQeVU/edit?usp=sharing
HttpWrapper.h
@class ASIFormDataRequest,HttpWrapper;
@protocol HttpWrapperDelegate
- (void) HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response;
- (void) HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error;
@optional
- (void) fetchDataSuccess:(NSString *)response;
- (void) fetchDataFail:(NSError *)error;
@optional
- (void) fetchImageSuccess:(NSString *)response;
- (void) fetchImageFail:(NSError *)error;
@end
@interface HttpWrapper : NSObject {
ASIFormDataRequest *requestMain;
NSObject<HttpWrapperDelegate> *delegate;
//BOOL isImage;
}
@property (nonatomic, assign) ASIFormDataRequest *requestMain;
@property (nonatomic, assign) NSObject<HttpWrapperDelegate> *delegate;
-(void) requestWithMethod:(NSString*)method url:(NSString*)strUrl param:(NSMutableDictionary*)dictParam;
-(void)setVideoData:(NSString*)method url:(NSString*)strUrl param:(NSMutableDictionary*)dictParam;
-(void) requestWithImageUrl:(NSString*)strUrl toFolder:(NSString*)folderName;
-(void) cancelRequest;
@end
HttpWrapper.m
#import "HttpWrapper.h"
#import "ASIFormDataRequest.h"
#import "AppDelegate.h"
#import "NSObject+SBJSON.h"
#import "SBJSON.h"
@implementation HttpWrapper
AppDelegate *appDelegate;
@synthesize delegate, fetchSuccess, fetchFail;
-(id)initWithDelegate:(id)del {
self = [super init];
if(self) {
delegate = del;
appDelegate = [AppDelegate sharedDelegate];
}
return self;
}
-(void) requestWithMethod:(NSString*)method url:(NSString*)strUrl param:(NSMutableDictionary*)dictParam selSuc:(SEL)forSuc selFail:(SEL)forFail
{
fetchSuccess = forSuc;
fetchFail = forFail;
NSLog(@"HttpWrapper method:%@ >> %@ ", method, strUrl);
NSLog(@"%@",dictParam);
NSURL *url = [NSURL URLWithString:strUrl];
ASIFormDataRequest *requestMain = [ASIFormDataRequest requestWithURL:url];
[requestMain setRequestMethod:method];
if(dictParam != nil) {
NSArray *allKey = [dictParam allKeys];
for(int i=0; i<[allKey count]; i++) {
NSString *key = [allKey objectAtIndex:i];
if([key isEqualToString:@"file"]) {
NSMutableDictionary *dict = [dictParam valueForKey:key];
NSString *filepath = [dict valueForKey:@"filepath"];
NSString *filekey = [dict valueForKey:@"filekey"];
[requestMain setFile:filepath forKey:filekey];
} else {
NSString *value = [dictParam valueForKey:key];
[requestMain setPostValue:value forKey:key];
}
}
}
[requestMain setDelegate:self];
[requestMain startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request {
NSString *responseString = [request responseString];
NSLog(@"HttpWrapper > requestFinished > %@",responseString);
SBJSON *parser = [[[SBJSON alloc] init] autorelease];
NSDictionary *dic = (NSDictionary *)[parser objectWithString:responseString error:nil];
if([delegate respondsToSelector:fetchSuccess])
[delegate performSelector:fetchSuccess withObject:dic];
if ([[dic valueForKey:@"success"]intValue] == 0) {
if ([dic valueForKey:@"msg"] != (id)[NSNull null]) {
[appDelegate showAlert:@"Alert" message:[dic valueForKey:@"msg"]];
}
}
request = nil;
}
- (void)requestFailed:(ASIHTTPRequest *)request {
NSError *error = [request error];
NSLog(@"HttpWrapper > requestFailed > error: %@",error);
request = nil;
[appDelegate showAlert:@"Warning" message:@"Some Technical or Internet problem accure"];
if([delegate respondsToSelector:fetchFail])
[delegate performSelector:fetchFail withObject:error];
}
-(void) requestWithImageUrl:(NSString*)strUrl {
NSURL *url = [NSURL URLWithString:strUrl];
NSString *filePath = [appDelegate applicationCacheDirectory] ;
filePath = [filePath stringByAppendingPathComponent:[url lastPathComponent]];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:filePath] == YES) {
if([delegate respondsToSelector:@selector(fetchImageSuccess:)])
[delegate performSelector:@selector(fetchImageSuccess:) withObject:filePath];
return;
}
ASIFormDataRequest *requestMain = [ASIHTTPRequest requestWithURL:url];
[requestMain setDidFinishSelector:@selector(requestFinishedImage:)];
[requestMain setDidFailSelector:@selector(requestFinishedImage:)];
[requestMain setDownloadDestinationPath:filePath];
[requestMain setShouldContinueWhenAppEntersBackground:YES];
[requestMain setDelegate:self];
[requestMain startAsynchronous];
}
-(void) requestWithImageUrl:(NSString*)strUrl toFolder:(NSString*)folderName venueName:(NSString*)vn{
NSURL *url = [NSURL URLWithString:strUrl];
NSString *filePath = [[appDelegate applicationCacheDirectory] stringByAppendingPathComponent:folderName];
filePath = [filePath stringByAppendingPathComponent:[vn stringByAppendingString:@".png"]];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:filePath] == YES) {
if([delegate respondsToSelector:@selector(fetchImageSuccess:)])
[delegate performSelector:@selector(fetchImageSuccess:) withObject:filePath];
return;
}
ASIFormDataRequest *requestMain = [ASIHTTPRequest requestWithURL:url];
[requestMain setDidFinishSelector:@selector(requestFinishedImage:)];
[requestMain setDidFailSelector:@selector(requestFinishedImage:)];
[requestMain setDownloadDestinationPath:filePath];
[requestMain setShouldContinueWhenAppEntersBackground:YES];
[requestMain setDelegate:self];
[requestMain startAsynchronous];
}
- (void)requestFinishedImage:(ASIHTTPRequest *)request
{
//NSData *responseData = [request responseData];
if([delegate respondsToSelector:@selector(fetchImageSuccess:)])
[delegate performSelector:@selector(fetchImageSuccess:) withObject:[request downloadDestinationPath]];
request = nil;
}
- (void)requestFailedImage:(ASIHTTPRequest *)request
{
NSError *error = [request error];
NSLog(@"HttpWrapper > requestFailedImage > error: %@",error);
request = nil;
if([delegate respondsToSelector:@selector(fetchImageFail:)])
[delegate performSelector:@selector(fetchImageFail:) withObject:error];
}
@end
Calling HttpWrapper method for Parsing :-
if ([txtcommentText.text isEqualToString:@""]) {
[appDelegate showAlertWithTitle:@"Alert" message:@"CommentBox is Empty Please Write the comment"];
}
else
{
if(sendCommentRequest)
{
[sendCommentRequest cancelRequest];
[sendCommentRequest release];
sendCommentRequest = nil;
}
[appDelegate showLoadingView];
sendCommentRequest = [[HttpWrapper alloc] init];
sendCommentRequest.delegate=self;
NSString *strUrl =[NSString stringWithFormat:@"%@?action=addPostComment",serverURl];
NSString *strPostId =[objUserImage valueForKey:@"postid"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *strUsername=[defaults objectForKey:@"username"];
NSMutableDictionary *dictcomment = [NSMutableDictionary dictionary];
[dictcomment setObject:strUsername forKey:@"username"];
[dictcomment setObject:strPostId forKey:@"postid"];
[dictcomment setObject:txtcommentText.text forKey:@"comment"];
[sendCommentRequest requestWithMethod:@"POST" url:strUrl param:dictcomment];
[UIView transitionWithView:commentView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{commentView.hidden=NO;} completion:nil];
[commentView setHidden:YES];
}
Httpwrapper delegate methods :-
(void)fetchDataFail:(NSError *)error
{
[appDelegate hideLoadingView];
}
-(void)fetchDataSuccess:(NSString *)response{
SBJSON *parser = [[SBJSON alloc] init];
[parser retain];
jsonDic=[parser objectWithString:response error:nil];
[jsonDic retain];
NSString *strStutas = [jsonDic objectForKey:@"message"];
txtFirstName.hidden = TRUE;
txtLastName.hidden = TRUE;
txtCity.hidden = TRUE;
btnProfileUpdate.hidden =TRUE;
txtState.hidden = TRUE;
txtFullName.hidden = FALSE;
txtFullAdd.hidden = FALSE;
if([strStutas isEqualToString:@"Success"])
{
// Delete all Previous Images ...
[db deleteAllPrevProfileInfo];
if (loadMore == FALSE) {
[db deleteAllPrevProfilePostsInfo];
}
else
{
[db deleteAllPrevProfilePostsInfoWithMore];
}
if(result)
{
[result release];
result = nil;
}
NSMutableDictionary *dicsUserData=[jsonDic objectForKey:@"result"];
[dicsUserData retain];
NSArray *dataresult =[dicsUserData objectForKey:@"posts"];
if (dataresult) {
for (NSMutableDictionary *objDic in dataresult) {
ProfilePosts *obj = (ProfilePosts *)[NSEntityDescription insertNewObjectForEntityForName:@"ProfilePosts"
inManagedObjectContext:appDelegate.managedObjectContext];
float expWidth = 320, expHeight, orgWidth, orgHeight;
orgWidth = [[[objDic objectForKey:@"image_data"] objectForKey:@"width"] floatValue];
orgHeight = [[[objDic objectForKey:@"image_data"] objectForKey:@"height"] floatValue];
expHeight = (orgHeight * expWidth)/orgWidth;
obj.postid = [objDic objectForKey:@"postid"];
obj.imagetitle = [objDic objectForKey:@"imagetitle"];
obj.imageurl = [objDic objectForKey:@"imageurl"];
obj.imagedesc = [objDic objectForKey:@"imagedesc"];
obj.is_portrait = [objDic objectForKey:@"is_portrait"];
obj.username = [objDic objectForKey:@"username"];
obj.datetime = [objDic objectForKey:@"datetime"];
obj.photo = [dicsUserData objectForKey:@"photo"];
obj.commentcount =[objDic objectForKey:@"comment_count"];
obj.likecount =[objDic objectForKey:@"likecount"];
obj.userlikecount =[NSNumber numberWithBool:[[objDic objectForKey:@"currentUserLike"] boolValue]];
obj.img_height = [NSNumber numberWithFloat:expHeight];
obj.img_width = [NSNumber numberWithFloat:expWidth];
[appDelegate saveAction];
}
}
////// Full name
NSString *fname = [dicsUserData objectForKey:@"FirstName"];
fname = [fname stringByAppendingString:@" "];
NSString *fullname = [fname stringByAppendingString:[dicsUserData objectForKey:@"LastName"]];
//// City, State
NSString *strConcate;
if ([[dicsUserData objectForKey:@"State"] isEqualToString:@""]) {
strConcate = [NSString stringWithFormat:@" "];
}
else{
strConcate = [NSString stringWithFormat:@", "];
}
//// City, State
NSString *city = [[dicsUserData objectForKey:@"City"] stringByAppendingString:strConcate];
NSString *fullAdd = [city stringByAppendingString:[dicsUserData objectForKey:@"State"]];
txtFullName.text = fullname;
txtFullAdd.text = fullAdd;
result = [db getLastImages];
[result retain];
[tblView reloadData];
if ([[dicsUserData objectForKey:@"photo"] isEqualToString: @""]) {
ivPhoto.image = [UIImage imageNamed:@"noImage.png"];
}
if (!result) {
ProfilePosts *arrGetUserProfile = (ProfilePosts *)[result objectAtIndex:0];
NSURL *imgURL = [NSURL URLWithString:arrGetUserProfile.photo];
NSString *strImg = [NSString stringWithContentsOfURL:imgURL
encoding:NSStringEnumerationByParagraphs
error:errno];
// ivPhoto.image = [UIImage imageWithData:imgData];
[asyncImg loadImageFromStringforUserimg:strImg];
}else{
NSString *imgStr = [NSString stringWithFormat:@"%@", [dicsUserData objectForKey:@"photo"]];
[asyncImg loadImageFromStringforUserimg:imgStr];
}
btnProfileUpdate.hidden=FALSE;
}
[appDelegate hideLoadingView];
[jsonDic release];
[parser release];
}
OR another methods way of implementing :-
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error{
[appDelegate hideLoadingView];
if(wrapper == likeRequest)
{
[appDelegate showAlertWithTitle:@"Like"
message:@"Error while sending like"];
}
else if(wrapper == commentsRequest)
{
[appDelegate showAlertWithTitle:@"Comment"
message:@"Error while fetching comments"];
}
if(wrapper == sendCommentRequest)
{
[appDelegate showAlertWithTitle:@"Comment"
message:@"Error while posting comment"];
}
}
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response{
SBJSON *parser = [[SBJSON alloc] init];
NSLog(@"Response : %@",response);
if(wrapper == likeRequest)
{
dictDetail = [parser objectWithString:response];
[dictDetail retain];
NSString *counterlike=[dictDetail objectForKey:@"totalLikes"];
[lblLike setText:[NSString stringWithFormat:@"%@",counterlike]];
BOOL currentUserLike = [[dictDetail objectForKey:@"currentUserLike"] boolValue];
if (currentUserLike == TRUE) {
UIImage* imageBtn = [UIImage imageNamed:@"favoritered@2x.png"];
[btnLike setBackgroundImage:imageBtn forState:UIControlStateNormal];
}
else{
UIImage* imageBtn = [UIImage imageNamed:@"favorite.png"];
[btnLike setBackgroundImage:imageBtn forState:UIControlStateNormal];
}
}
else if(wrapper == commentsRequest)
{
dictComment =[parser objectWithString:response];
[dictComment retain];
NSString *counterlike=[dictComment objectForKey:@"totalLikes"];
[lblLike setText:[NSString stringWithFormat:@"%@",counterlike]];
arrComments = [dictComment objectForKey:@"results"];
NSString *countstr = [NSString stringWithFormat:@"%d",arrComments.count];
[lblComment setText:countstr];
BOOL currentUserLike = [[dictComment objectForKey:@"currentUserLike"] boolValue];
if (currentUserLike == TRUE) {
UIImage* imageBtn = [UIImage imageNamed:@"favoritered@2x.png"];
[btnLike setBackgroundImage:imageBtn forState:UIControlStateNormal];
}
else{
UIImage* imageBtn = [UIImage imageNamed:@"favorite.png"];
[btnLike setBackgroundImage:imageBtn forState:UIControlStateNormal];
}
[tblView reloadData];
}
else if(wrapper == sendCommentRequest)
{
[self fetchComments];
}
[parser release];
[appDelegate hideLoadingView];
}
No comments:
Post a Comment