Created
February 10, 2014 08:05
-
-
Save Cellane/8912069 to your computer and use it in GitHub Desktop.
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
// | |
// ANAPIManager.m | |
// Futruy | |
// | |
// Created by Milan Vít on 30.01.14. | |
// Copyright (c) 2014 AiNeuron. All rights reserved. | |
// | |
#import <AFNetworking.h> | |
#import "ANAPIManager.h" | |
#import "ANConstantsManager.h" | |
@interface ANAPIManager () | |
@property (nonatomic, retain, readonly) ANConstantsManager *manager; | |
@property (nonatomic, retain) NSString *authToken; | |
@end | |
@implementation ANAPIManager | |
#pragma mark Initialise methods | |
- (id)init | |
{ | |
self = [super init]; | |
if (self) | |
{ | |
_manager = [ANConstantsManager sharedManager]; | |
} | |
return self; | |
} | |
#pragma mark Instance methods | |
- (BOOL)isLoggedIn | |
{ | |
return [self authToken] != nil; | |
} | |
- (void)registerUser:(NSString *)email password:(NSString *)password confirmation:(NSString *)passwordConfirmation alertViewDelegate:(id<UIAlertViewDelegate>)delegate | |
{ | |
if ([password isEqualToString:passwordConfirmation]) | |
{ | |
AFHTTPRequestOperationManager *requestOperationManager = [AFHTTPRequestOperationManager manager]; | |
NSDictionary *parameters = @ | |
{ | |
@"email": email, | |
@"password": password | |
}; | |
[requestOperationManager setRequestSerializer:[AFJSONRequestSerializer serializer]]; | |
[requestOperationManager setResponseSerializer:[AFJSONResponseSerializer serializer]]; | |
[requestOperationManager POST:[[self manager] APIURLForMethod:@"register"] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) | |
{ | |
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Hotovo" message:@"Done and done, bitch!" delegate:delegate cancelButtonTitle:[[self manager] cancelButtonText] otherButtonTitles:nil]; | |
[alertView show]; | |
[self setAuthToken:[responseObject objectForKey:@"auth_token"]]; | |
} | |
failure:^(AFHTTPRequestOperation *operation, NSError *error) | |
{ | |
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chyba" message:@"Všechna pole jsou povinná a e-mailová adresa musí existovat!" delegate:nil cancelButtonTitle:[[self manager] cancelButtonText] otherButtonTitles:nil]; | |
[alertView show]; | |
}]; | |
} | |
else | |
{ | |
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chyba" message:@"Hesla nesouhlasí!" delegate:nil cancelButtonTitle:[[self manager] cancelButtonText] otherButtonTitles:nil]; | |
[alertView show]; | |
} | |
} | |
- (void)loginUser:(NSString *)email password:(NSString *)password delegate:(id<ANAPIManagerDelegate>)delegate | |
{ | |
AFHTTPRequestOperationManager *requestOperationManager = [AFHTTPRequestOperationManager manager]; | |
NSDictionary *parameters = @ | |
{ | |
@"email": email, | |
@"password": password | |
}; | |
[requestOperationManager setRequestSerializer:[AFJSONRequestSerializer serializer]]; | |
[requestOperationManager setResponseSerializer:[AFJSONResponseSerializer serializer]]; | |
[requestOperationManager POST:[[self manager] APIURLForMethod:@"login"] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) | |
{ | |
[self setAuthToken:[responseObject objectForKey:@"auth_token"]]; | |
[delegate apiSuccess:responseObject]; | |
} | |
failure:^(AFHTTPRequestOperation *operation, NSError *error) | |
{ | |
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chyba" message:@"Špatná e-mailová adresa nebo heslo!" delegate:nil cancelButtonTitle:[[self manager] cancelButtonText] otherButtonTitles:nil]; | |
[alertView show]; | |
}]; | |
} | |
- (void)logoutUser:(id<ANAPIManagerDelegate>)delegate; | |
{ | |
AFHTTPRequestOperationManager *requestOperationManager = [AFHTTPRequestOperationManager manager]; | |
[requestOperationManager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; | |
[requestOperationManager setResponseSerializer:[AFJSONResponseSerializer serializer]]; | |
[[requestOperationManager requestSerializer] setValue:[self authToken] forHTTPHeaderField:[[self manager] APITokenHeaderName]]; | |
[requestOperationManager POST:[[self manager] APIURLForMethod:@"logout"] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) | |
{ | |
[self setAuthToken:nil]; | |
[delegate apiSuccess:responseObject]; | |
} | |
failure:^(AFHTTPRequestOperation *operation, NSError *error) | |
{ | |
[self setAuthToken:nil]; | |
[delegate apiFailure:error]; | |
}]; | |
} | |
- (void)checkBarCode:(NSString *)barCode delegate:(id<ANAPIManagerDelegate>)delegate | |
{ | |
AFHTTPRequestOperationManager *requestOperationManager = [AFHTTPRequestOperationManager manager]; | |
NSDictionary *parameters = @ | |
{ | |
@"code": barCode | |
}; | |
[requestOperationManager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; | |
[requestOperationManager setResponseSerializer:[AFJSONResponseSerializer serializer]]; | |
[requestOperationManager GET:[[self manager] APIURLForMethod:@"product-info"] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) | |
{ | |
[delegate apiSuccess:responseObject]; | |
} | |
failure:^(AFHTTPRequestOperation *operation, NSError *error) | |
{ | |
[delegate apiFailure:error]; | |
}]; | |
} | |
- (void)checkQRCode:(NSString *)QRCode delegate:(id<ANAPIManagerDelegate>)delegate | |
{ | |
AFHTTPRequestOperationManager *requestOperationManager = [AFHTTPRequestOperationManager manager]; | |
NSDictionary *parameters = @ | |
{ | |
@"code": QRCode | |
}; | |
[requestOperationManager setRequestSerializer:[AFJSONRequestSerializer serializer]]; | |
[requestOperationManager setResponseSerializer:[AFJSONResponseSerializer serializer]]; | |
[[requestOperationManager requestSerializer] setValue:[self authToken] forHTTPHeaderField:[[self manager] APITokenHeaderName]]; | |
[requestOperationManager POST:[[self manager] APIURLForMethod:@"check-coupon"] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) | |
{ | |
[delegate apiSuccess:responseObject]; | |
} | |
failure:^(AFHTTPRequestOperation *operation, NSError *error) | |
{ | |
if ([[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode] == 403) | |
{ | |
[self setAuthToken:nil]; | |
} | |
[delegate apiFailure:error]; | |
}]; | |
} | |
- (void)submitExperience:(NSNumber *)emotion items:(NSArray *)items text:(NSString *)text friends:(NSArray *)friends photos:(NSArray *)photos delegate:(id<ANAPIManagerDelegate>)delegate | |
{ | |
AFHTTPRequestOperationManager *requestOperationManager = [AFHTTPRequestOperationManager manager]; | |
NSDictionary *parameters = @ | |
{ | |
@"emotion": emotion, | |
@"items": items, | |
@"text": text, | |
@"friends": friends, | |
@"photos": photos | |
}; | |
NSLog(@"%@", parameters);return; | |
[requestOperationManager setRequestSerializer:[AFJSONRequestSerializer serializer]]; | |
[requestOperationManager setResponseSerializer:[AFJSONResponseSerializer serializer]]; | |
[[requestOperationManager requestSerializer] setValue:[self authToken] forHTTPHeaderField:[[self manager] APITokenHeaderName]]; | |
[requestOperationManager POST:[[self manager] APIURLForMethod:@"experience"] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) | |
{ | |
[delegate apiSuccess:responseObject]; | |
} | |
failure:^(AFHTTPRequestOperation *operation, NSError *error) | |
{ | |
if ([[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode] == 403) | |
{ | |
[self setAuthToken:nil]; | |
} | |
[delegate apiFailure:error]; | |
}]; | |
} | |
#pragma mark Accessor methods | |
- (void)setAuthToken:(NSString *)authToken | |
{ | |
[[NSUserDefaults standardUserDefaults] setObject:authToken forKey:@"auth_token"]; | |
} | |
- (NSString *)authToken | |
{ | |
return [[NSUserDefaults standardUserDefaults] objectForKey:@"auth_token"]; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment