Skip to content

Instantly share code, notes, and snippets.

@greenisus
greenisus / gist:1254603
Created September 30, 2011 18:37
nice and neat
- (IBAction)loginButtonPressed:(id)sender {
// this is obviously temporary until we decide on UI for this :)
self.navigationItem.title = @"Authenticating...";
RSAccount *account = [RSAccount blank];
account.provider = self.provider;
account.username = self.usernameTextField.text;
account.api_key = self.apiKeyTextField.text;
@greenisus
greenisus / gist:1254563
Created September 30, 2011 18:19
saving an account
- (IBAction)loginButtonPressed:(id)sender {
// this is obviously temporary until we decide on UI for this :)
self.navigationItem.title = @"Authenticating...";
RSAccount *account = [RSAccount blank];
account.provider = self.provider;
account.username = self.usernameTextField.text;
account.api_key = self.apiKeyTextField.text;
@greenisus
greenisus / gist:1248581
Created September 28, 2011 17:30
short vc
//
// RSAccountsViewController.m
// Rackspace
//
// Created by Michael Mayo on 9/27/11.
// Copyright (c) 2011 Rackspace, US Inc. All rights reserved.
//
#import "RSAccountsViewController.h"
#import "RSAccountsDataSource.h"
@greenisus
greenisus / gist:1248574
Created September 28, 2011 17:27
shorter data source
//
// RSAccountsDataSource.m
// Rackspace
//
// Created by Michael Mayo on 9/27/11.
// Copyright (c) 2011 Rackspace, US Inc. All rights reserved.
//
#import "RSAccountsDataSource.h"
#import "RSAccount.h"
@greenisus
greenisus / gist:1246320
Created September 27, 2011 21:37
data source
//
// RSAccountsDataSource.m
// Rackspace
//
// Created by Michael Mayo on 9/27/11.
// Copyright (c) 2011 Rackspace, US Inc. All rights reserved.
//
#import "RSAccountsDataSource.h"
#import "RSAccount.h"
@greenisus
greenisus / gist:1246318
Created September 27, 2011 21:36
view controller
//
// RSAccountsViewController.m
// Rackspace
//
// Created by Michael Mayo on 9/27/11.
// Copyright (c) 2011 Rackspace, US Inc. All rights reserved.
//
#import "RSAccountsViewController.h"
#import "RSAccount.h"
// parsed results from the http response
@property (nonatomic, retain) NSArray *objects;
// detailed error
@property (nonatomic, retain) NSError *error;
// raw HTTP response information
@property (nonatomic, retain) NSDictionary *responseHeaders;
@property (nonatomic, retain) NSString *responseString;
@property (nonatomic, assign) NSUInteger responseStatusCode;
+ (void)authenticate:(CKResultBlock)completionBlock errorBlock:(CKResultBlock)errorBlock {
NSDictionary *headers = [[[NSDictionary alloc] initWithObjectsAndKeys:@"rackcloud07", @"X-Auth-User", @"secret", @"X-Auth-Key", nil] autorelease];
CKRequest *request = [CKRequest requestWithMap:[CKRouterMap mapWithRemotePath:@"https://auth.api.rackspacecloud.com/v1.0"]];
[request addHeaders:headers];
request.completionBlock = completionBlock;
request.errorBlock = errorBlock;
[request send];
- (void)pollUntilActive:(OpenStackAccount *)account withProgress:(ASIBasicBlock)progressBlock complete:(ASIBasicBlock)completeBlock {
if ([self shouldBePolled]) {
NSString *endpoint = [account loadBalancerEndpointForRegion:self.region];
__block LoadBalancerRequest *request = [LoadBalancerRequest getLoadBalancerDetailsRequest:account loadBalancer:self endpoint:endpoint];
request.delegate = self;
[request setCompletionBlock:^{
if ([request isSuccess]) {
LoadBalancer *newLB = [request loadBalancer:account];
self.status = newLB.status;
@greenisus
greenisus / gist:1128319
Created August 5, 2011 19:33
Add/Remove Nodes 2
- (void)deleteNodes:(NSArray *)nodesToDelete withProgress:(ASIBasicBlock)progressBlock {
NSString *endpoint = [self.account loadBalancerEndpointForRegion:self.loadBalancer.region];
__block int deleteIndex = 0;
void (^deleteNodeBlock)(LoadBalancerNode *node) = ^(LoadBalancerNode *node) {
APICallback *callback = [self.account.manager deleteLBNode:node loadBalancer:self.loadBalancer endpoint:endpoint];
[callback success:^(OpenStackRequest *request) {
deleteIndex++;
progressBlock();