Skip to content

Instantly share code, notes, and snippets.

@fzf
Created October 30, 2012 01:17
Show Gist options
  • Save fzf/3977753 to your computer and use it in GitHub Desktop.
Save fzf/3977753 to your computer and use it in GitHub Desktop.
Server
//
// 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
@fzf
Copy link
Author

fzf commented Oct 30, 2012

@fzf
Copy link
Author

fzf commented Oct 30, 2012

@fzf
Copy link
Author

fzf commented Oct 30, 2012

Provider+Implementation.h

@interface Provider ( Implementation )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment