Skip to content

Instantly share code, notes, and snippets.

@Cellane
Created February 10, 2014 08:05
Show Gist options
  • Save Cellane/8912069 to your computer and use it in GitHub Desktop.
Save Cellane/8912069 to your computer and use it in GitHub Desktop.
//
// 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