Created
October 30, 2012 01:17
-
-
Save fzf/3977753 to your computer and use it in GitHub Desktop.
Server
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
// | |
// Server.m | |
// Loop | |
// | |
// Created by Fletcher Fowler on 8/19/12. | |
// Copyright (c) 2012 Zamboni Dev. All rights reserved. | |
// | |
#import "Server.h" | |
#import "SMWebRequest.h" | |
#import "User+Implementation.h" | |
@implementation Server | |
@synthesize webRequest = _webRequest; | |
@synthesize delegate = _delegate; | |
static Server *sharedObject; | |
+ (Server *)sharedInstance{ | |
if (sharedObject == nil){ | |
sharedObject = [[super allocWithZone:NULL] init]; | |
} | |
return sharedObject; | |
} | |
+ (void)loginWithEmail:(NSString *)email andPassword:(NSString *)password | |
{ | |
NSDictionary *params = @{ | |
@"email" : email, | |
@"password" : password | |
}; | |
NSMutableURLRequest *request = [self createRequest:@"http://localhost:3000/session.json":params]; | |
Server *shared = [Server sharedInstance]; | |
shared.webRequest = [SMWebRequest requestWithURLRequest:request delegate:nil context:nil]; | |
[shared.webRequest addTarget:self action:@selector(loginResponse:) forRequestEvents:SMWebRequestEventComplete]; | |
[shared.webRequest addTarget:self action:@selector(loginFailure:) forRequestEvents:SMWebRequestEventError]; | |
[shared.webRequest start]; | |
} | |
+ (void)loginResponse:(NSData *)data | |
{ | |
Server *shared = [Server sharedInstance]; | |
NSError *error; | |
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; | |
[User loginUser:response]; | |
[shared.delegate didLogin]; | |
} | |
+ (void)loginFailure:(NSError *)theError | |
{ | |
Server *shared = [Server sharedInstance]; | |
[shared.delegate loginFailure]; | |
NSLog(@"%@", [theError description]); | |
NSLog(@"%d", [theError code]); | |
} | |
+ (void)registerUser:(NSString *)email:(NSString *)password | |
{ | |
NSDictionary *params = @{ | |
@"user" : @{ | |
@"email" : email, | |
@"password" : password | |
} | |
}; | |
NSMutableURLRequest *request = [self createRequest:@"http://localhost:3000/users.json":params]; | |
Server *server = [Server sharedInstance]; | |
server.webRequest = [SMWebRequest requestWithURLRequest:request delegate:nil context:nil]; | |
[server.webRequest addTarget:self action:@selector(registrationResponse:) forRequestEvents:SMWebRequestEventComplete]; | |
[server.webRequest addTarget:self action:@selector(providerFailure:) forRequestEvents:SMWebRequestEventError]; | |
[server.webRequest start]; | |
} | |
+ (void)registrationResponse:(NSData *)data | |
{ | |
NSError *error; | |
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; | |
[User loginUser:[response objectForKey:@"user"]]; | |
} | |
+ (void)sendProviderToServer:(NSDictionary *)providerDictionary provider_type:(NSString *)provider_type | |
{ | |
NSDictionary *params = @{@"provider_type" : provider_type, @"response" : providerDictionary}; | |
NSMutableURLRequest *request = [self createRequest:@"http://localhost:3000/users/providers.json":params]; | |
Server *server = [Server sharedInstance]; | |
server.webRequest = [SMWebRequest requestWithURLRequest:request delegate:nil context:nil]; | |
[server.webRequest addTarget:self action:@selector(providerResponse:) forRequestEvents:SMWebRequestEventComplete]; | |
[server.webRequest addTarget:self action:@selector(providerFailure:) forRequestEvents:SMWebRequestEventError]; | |
[server.webRequest start]; | |
} | |
+ (void)providerResponse:(NSData *)data | |
{ | |
NSError *error; | |
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; | |
BOOL loggedIn = [User loginUserFromProvider:response]; | |
NSLog(loggedIn ? @"LOGGED IN" : @"NOT LOGGED IN"); | |
Server *shared = [Server sharedInstance]; | |
[shared.delegate didLogin]; | |
} | |
+ (void)providerFailure:(NSData *)data | |
{ | |
NSLog(@"Provider Failure"); | |
} | |
+ (NSMutableURLRequest *)createRequest:(NSString *)url:(NSDictionary *)params | |
{ | |
NSError *error; | |
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params options:kNilOptions error:&error]; | |
NSURL *requestUrl = [NSURL URLWithString:url]; | |
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestUrl]; | |
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; | |
[request setHTTPMethod:@"POST"]; | |
[request setHTTPBody:jsonData]; | |
return request; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://github.com/nfarina/webrequest