Michael Mayo

cleanup

//
// ASICloudFilesAccount.h
// iPhone
//
// Created by Michael Mayo on 1/7/10.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ASICloudFilesAccount : NSObject {
}
@end
//
// ASICloudFilesAccount.m
// iPhone
//
// Created by Michael Mayo on 1/7/10.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "ASICloudFilesAccount.h"
@implementation ASICloudFilesAccount
@end
... ... @@ -24,19 +24,17 @@
@property (nonatomic, retain) ASICloudFilesContainer *currentObject;
@property (nonatomic, retain) ASICloudFilesContainerXMLParserDelegate *xmlParserDelegate;
#pragma mark Constructors
// HEAD /<api version>/<account>
// HEAD operations against an account are performed to retrieve the number of Containers and the total bytes stored in Cloud Files for the account. This information is returned in two custom headers, X-Account-Container-Count and X-Account-Bytes-Used.
+ (id)accountInfoRequest;
- (NSUInteger)containerCount;
- (NSUInteger)bytesUsed;
// GET /<api version>/<account>/<container>
// Create a request to list all containers
+ (id)listRequest;
+ (id)listRequestWithLimit:(NSUInteger)limit;
+ (id)listRequestWithMarker:(NSString *)marker;
+ (id)listRequestWithLimit:(NSUInteger)limit marker:(NSString *)marker;
- (NSArray *)containers;
// PUT /<api version>/<account>/<container>
+ (id)createContainerRequest:(NSString *)containerName;
... ... @@ -44,8 +42,4 @@
// DELETE /<api version>/<account>/<container>
+ (id)deleteContainerRequest:(NSString *)containerName;
- (NSUInteger)containerCount;
- (NSUInteger)bytesUsed;
- (NSArray *)containers;
@end
... ...
... ... @@ -16,20 +16,17 @@
@synthesize currentElement, currentContent, currentObject;
@synthesize xmlParserDelegate;
//ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:rackspaceCloudAuthURL]];
//NSMutableDictionary *headers = [[NSMutableDictionary alloc] initWithCapacity:2];
//[headers setObject:username forKey:@"X-Auth-User"];
//[headers setObject:apiKey forKey:@"X-Auth-Key"];
//[request setRequestHeaders:headers];
//[headers release];
//return request;
#pragma mark -
#pragma mark Constructors
+ (id)storageRequestWithMethod:(NSString *)method containerName:(NSString *)containerName queryString:(NSString *)queryString {
NSString *urlString = [NSString stringWithFormat:@"%@/%@%@", [ASICloudFilesRequest storageURL], containerName, queryString];
//NSLog(@"container request url: %@", urlString);
NSString *urlString;
if (containerName == nil) {
urlString = [NSString stringWithFormat:@"%@%@", [ASICloudFilesRequest storageURL], queryString];
} else {
urlString = [NSString stringWithFormat:@"%@/%@%@", [ASICloudFilesRequest storageURL], containerName, queryString];
}
ASICloudFilesContainerRequest *request = [[ASICloudFilesContainerRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
[request setRequestMethod:method];
[request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]];
... ... @@ -37,19 +34,16 @@
}
+ (id)storageRequestWithMethod:(NSString *)method queryString:(NSString *)queryString {
//ASICloudFilesRequest *request = [ASICloudFilesRequest storageRequest];
NSString *urlString = [NSString stringWithFormat:@"%@%@", [ASICloudFilesRequest storageURL], queryString];
//NSLog(@"container request url: %@", urlString);
ASICloudFilesContainerRequest *request = [[ASICloudFilesContainerRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
[request setRequestMethod:method];
[request addRequestHeader:@"X-Auth-Token" value:[ASICloudFilesRequest authToken]];
return request;
return [ASICloudFilesContainerRequest storageRequestWithMethod:method containerName:nil queryString:queryString];
}
+ (id)storageRequestWithMethod:(NSString *)method {
return [ASICloudFilesContainerRequest storageRequestWithMethod:method queryString:@""];
}
#pragma mark -
#pragma mark HEAD - Retrieve Container Count and Total Bytes Used
// HEAD /<api version>/<account>
// HEAD operations against an account are performed to retrieve the number of Containers and the total bytes stored in Cloud Files for the account. This information is returned in two custom headers, X-Account-Container-Count and X-Account-Bytes-Used.
+ (id)accountInfoRequest {
... ... @@ -57,20 +51,28 @@
return request;
}
+ (id)listRequestWithLimit:(NSUInteger)limit marker:(NSString *)marker {
NSString *queryString = [NSString stringWithFormat:@"?format=xml&limit=%i&marker=%@", limit, [marker stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"GET" queryString:queryString];
return request;
- (NSUInteger)containerCount {
return [[[self responseHeaders] objectForKey:@"X-Account-Container-Count"] intValue];
}
+ (id)listRequestWithLimit:(NSUInteger)limit {
NSString *queryString = [NSString stringWithFormat:@"?format=xml&limit=%i", limit];
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"GET" queryString:queryString];
return request;
- (NSUInteger)bytesUsed {
return [[[self responseHeaders] objectForKey:@"X-Account-Bytes-Used"] intValue];
}
+ (id)listRequestWithMarker:(NSString *)marker {
NSString *queryString = [NSString stringWithFormat:@"?format=xml&marker=%@", [marker stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
#pragma mark -
#pragma mark GET - Retrieve Container List
+ (id)listRequestWithLimit:(NSUInteger)limit marker:(NSString *)marker {
NSString *queryString = @"?format=xml";
if (limit > 0) {
queryString = [queryString stringByAppendingString:[NSString stringWithFormat:@"&limit=%i", limit]];
}
if (marker != nil) {
queryString = [queryString stringByAppendingString:[NSString stringWithFormat:@"&marker=%@", marker]];
}
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"GET" queryString:queryString];
return request;
}
... ... @@ -83,40 +85,11 @@
return request;
}
// PUT /<api version>/<account>/<container>
+ (id)createContainerRequest:(NSString *)containerName {
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"PUT" containerName:containerName queryString:@""];
return request;
}
// DELETE /<api version>/<account>/<container>
+ (id)deleteContainerRequest:(NSString *)containerName {
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"DELETE" containerName:containerName queryString:@""];
return request;
}
#pragma mark -
#pragma mark Response Data
#pragma mark Account Info
- (NSUInteger)containerCount {
return [[[self responseHeaders] objectForKey:@"X-Account-Container-Count"] intValue];
}
- (NSUInteger)bytesUsed {
return [[[self responseHeaders] objectForKey:@"X-Account-Bytes-Used"] intValue];
}
#pragma mark Container List
- (NSArray *)containers {
if (xmlParserDelegate.containerObjects) {
return xmlParserDelegate.containerObjects;
}
//NSLog(@"list response data: %@", [self responseString]);
NSXMLParser *parser = [[[NSXMLParser alloc] initWithData:[self responseData]] autorelease];
if (xmlParserDelegate == nil) {
xmlParserDelegate = [[ASICloudFilesContainerXMLParserDelegate alloc] init];
... ... @@ -132,6 +105,24 @@
}
#pragma mark -
#pragma mark PUT - Create Container
// PUT /<api version>/<account>/<container>
+ (id)createContainerRequest:(NSString *)containerName {
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"PUT" containerName:containerName queryString:@""];
return request;
}
#pragma mark -
#pragma mark DELETE - Delete Container
// DELETE /<api version>/<account>/<container>
+ (id)deleteContainerRequest:(NSString *)containerName {
ASICloudFilesContainerRequest *request = [ASICloudFilesContainerRequest storageRequestWithMethod:@"DELETE" containerName:containerName queryString:@""];
return request;
}
#pragma mark -
#pragma mark Memory Management
- (void)dealloc {
... ...
... ... @@ -25,7 +25,6 @@
@property (nonatomic, retain) NSString *accountName;
@property (nonatomic, retain) NSString *containerName;
@property (nonatomic, retain) NSString *currentElement;
@property (nonatomic, retain) NSString *currentContent;
@property (nonatomic, retain) ASICloudFilesObject *currentObject;
... ... @@ -40,42 +39,13 @@
// HEAD /<api version>/<account>/<container>/<object>
// to get metadata
+ (id)objectInfoRequest:(NSString *)containerName objectPath:(NSString *)objectPath;
// GET
- (NSArray *)objects;
// ASICloudFilesObjectListRequest
// GET on container (for objects)
// limit
// marker
// prefix - For a string value X, causes the results to be limited to Object names beginning with the substring X.
// path - Now issuing a GET request against the Container name coupled with the “path” query parameter of the directory to list can traverse these “directories”. GET /v1/AccountString/backups?path=photos/animals
// every possible combination of object list request
// TODO: consider an options dictionary argument instead of so many method signatures
+ (id)listRequestWithContainer:(NSString *)containerName;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker prefix:(NSString *)prefix;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit prefix:(NSString *)prefix;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit prefix:(NSString *)prefix path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker;
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker prefix:(NSString *)prefix;
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker prefix:(NSString *)prefix path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName prefix:(NSString *)prefix;
+ (id)listRequestWithContainer:(NSString *)containerName prefix:(NSString *)prefix path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName path:(NSString *)path;
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker prefix:(NSString *)prefix path:(NSString *)path;
// TODO: GET object with data and metadata
// Conditional GET headers: If-Match • If-None-Match • If-Modified-Since • If-Unmodified-Since
// HTTP Range header: “Range: bytes=0-5” • “Range: bytes=-5” • “Range: bytes=32-“
// TODO: return 'ETag' header from GET
// TODO: maybe do chunked PUT
+ (id)getObjectRequestWithContainer:(NSString *)containerName objectPath:(NSString *)objectPath;
- (ASICloudFilesObject *)object;
... ...
... ... @@ -15,6 +15,9 @@
@synthesize currentElement, currentContent, currentObject;
@synthesize accountName, containerName;
#pragma mark -
#pragma mark Constructors
+ (id)storageRequestWithMethod:(NSString *)method containerName:(NSString *)containerName {
NSString *urlString = [NSString stringWithFormat:@"%@/%@", [ASICloudFilesRequest storageURL], containerName];
//NSLog(@"object request url: %@", urlString);
... ... @@ -46,7 +49,7 @@
}
#pragma mark -
#pragma mark Container Info
#pragma mark HEAD - Container Info
+ (id)containerInfoRequest:(NSString *)containerName {
ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"HEAD" containerName:containerName];
... ... @@ -62,7 +65,7 @@
}
#pragma mark -
#pragma mark Object Info
#pragma mark HEAD - Object Info
+ (id)objectInfoRequest:(NSString *)containerName objectPath:(NSString *)objectPath {
ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"HEAD" containerName:containerName objectPath:objectPath];
... ... @@ -70,7 +73,7 @@
}
#pragma mark -
#pragma mark List Requests
#pragma mark GET - List Objects
+ (NSString *)queryStringWithContainer:(NSString *)container limit:(NSUInteger)limit marker:(NSString *)marker prefix:(NSString *)prefix path:(NSString *)path {
NSString *queryString = @"?format=xml";
... ... @@ -98,73 +101,12 @@
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:nil prefix:nil path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:nil prefix:nil path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:marker prefix:nil path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker prefix:(NSString *)prefix {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:marker prefix:prefix path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit marker:(NSString *)marker path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:marker prefix:nil path:path];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit prefix:(NSString *)prefix {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:nil prefix:prefix path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit prefix:(NSString *)prefix path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:nil prefix:prefix path:path];
}
+ (id)listRequestWithContainer:(NSString *)containerName limit:(NSUInteger)limit path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:limit marker:nil prefix:nil path:path];
}
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:marker prefix:nil path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker prefix:(NSString *)prefix {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:marker prefix:prefix path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:marker prefix:nil path:path];
}
+ (id)listRequestWithContainer:(NSString *)containerName marker:(NSString *)marker prefix:(NSString *)prefix path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:marker prefix:prefix path:path];
}
+ (id)listRequestWithContainer:(NSString *)containerName prefix:(NSString *)prefix {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:nil prefix:prefix path:nil];
}
+ (id)listRequestWithContainer:(NSString *)containerName prefix:(NSString *)prefix path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:nil prefix:prefix path:path];
}
+ (id)listRequestWithContainer:(NSString *)containerName path:(NSString *)path {
return [ASICloudFilesObjectRequest listRequestWithContainer:containerName limit:0 marker:nil prefix:nil path:path];
}
#pragma mark -
#pragma mark Object List
- (NSArray *)objects {
if (objects) {
return objects;
}
objects = [[[NSMutableArray alloc] init] autorelease];
//NSLog(@"object list response data: %@", [self responseString]);
NSXMLParser *parser = [[[NSXMLParser alloc] initWithData:[self responseData]] autorelease];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
... ... @@ -175,7 +117,7 @@
}
#pragma mark -
#pragma mark GET Object
#pragma mark GET - Retrieve Object
+ (id)getObjectRequestWithContainer:(NSString *)containerName objectPath:(NSString *)objectPath {
return [ASICloudFilesObjectRequest storageRequestWithMethod:@"GET" containerName:containerName objectPath:objectPath];
... ... @@ -213,7 +155,7 @@
}
#pragma mark -
#pragma mark PUT Object
#pragma mark PUT - Upload Object
+ (id)putObjectRequestWithContainer:(NSString *)containerName object:(ASICloudFilesObject *)object {
return [self putObjectRequestWithContainer:containerName objectPath:object.name contentType:object.contentType objectData:object.data metadata:object.metadata etag:nil];
... ... @@ -221,8 +163,6 @@
+ (id)putObjectRequestWithContainer:(NSString *)containerName objectPath:(NSString *)objectPath contentType:(NSString *)contentType objectData:(NSData *)objectData metadata:(NSDictionary *)metadata etag:(NSString *)etag {
// TODO: etag?
ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"PUT" containerName:containerName objectPath:objectPath];
[request addRequestHeader:@"Content-Type" value:contentType];
[request addRequestHeader:@"Content-Length" value:[NSString stringWithFormat:@"%i", objectData.length]];
... ... @@ -242,7 +182,7 @@
}
#pragma mark -
#pragma mark POST Object Metadata
#pragma mark POST - Set Object Metadata
+ (id)postObjectRequestWithContainer:(NSString *)containerName object:(ASICloudFilesObject *)object {
return [self postObjectRequestWithContainer:containerName objectPath:object.name metadata:object.metadata];
... ... @@ -264,9 +204,8 @@
return request;
}
#pragma mark -
#pragma mark Delete Object
#pragma mark DELETE - Delete Object
+ (id)deleteObjectRequestWithContainer:(NSString *)containerName objectPath:(NSString *)objectPath {
ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest storageRequestWithMethod:@"DELETE" containerName:containerName objectPath:objectPath];
... ... @@ -276,19 +215,6 @@
#pragma mark -
#pragma mark XML Parser Delegate
/*
<container name="cf_service">
<object>
<name>10-17-2009&#32;9-23-54&#32;PM.png</name>
<hash>fdc7b0fedf8f304dd02c468567acb6f8</hash>
<bytes>1621</bytes>
<content_type>image/png</content_type>
<last_modified>2009-11-04T19:46:20.192723</last_modified>
</object>
<object><name>5253_513598038815_56400223_30531988_4542339_n-59.jpg</name><hash>ec133b3f8cf33cd036b351a85a093009</hash><bytes>36825</bytes><content_type>image/jpeg</content_type><last_modified>2009-09-01T22:46:40.851463</last_modified></object>
<object><name>7-eguas-59.jpg</name><hash>3d6a1e77aecbe8a7416bab41e88cdfc9</hash><bytes>1234678</bytes><content_type>image/jpeg</content_type><last_modified>2009-09-01T23:21:37.589124</last_modified></object>
</container>
*/
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
[self setCurrentElement:elementName];
... ... @@ -320,6 +246,9 @@
[self setCurrentContent:[[self currentContent] stringByAppendingString:string]];
}
#pragma mark -
#pragma mark Memory Management
- (void)dealloc {
[currentElement release];
[currentContent release];
... ...
... ... @@ -22,6 +22,9 @@ static NSString *rackspaceCloudAuthURL = @"https://auth.api.rackspacecloud.com/v
@implementation ASICloudFilesRequest
#pragma mark -
#pragma mark Attributes and Service URLs
+ (NSString *)authToken {
return authToken;
}
... ... @@ -34,6 +37,9 @@ static NSString *rackspaceCloudAuthURL = @"https://auth.api.rackspacecloud.com/v
return cdnManagementURL;
}
#pragma mark -
#pragma mark Authentication
+ (id)authenticationRequest {
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:rackspaceCloudAuthURL]];
[request addRequestHeader:@"X-Auth-User" value:username];
... ...
... ... @@ -21,7 +21,7 @@
#import "ASIInputStream.h"
// Automatically set on build
NSString *ASIHTTPRequestVersion = @"v1.2-33 2010-01-10";
NSString *ASIHTTPRequestVersion = @"v1.2-34 2010-01-10";
// We use our own custom run loop mode as CoreAnimation seems to want to hijack our threads otherwise
static CFStringRef ASIHTTPRequestRunMode = CFSTR("ASIHTTPRequest");
... ...
... ... @@ -17,26 +17,4 @@
@property (retain,nonatomic) ASINetworkQueue *networkQueue;
// ASICloudFilesRequest
- (void)testAuthentication;
- (void)testDateParser;
// ASICloudFilesContainerRequest
- (void)testAccountInfo;
- (void)testContainerList; // TODO: with marker and limit permutations as well
- (void)testContainerCreate;
- (void)testContainerDelete;
// ASICloudFilesObjectRequest
- (void)testContainerInfo;
- (void)testObjectInfo;
- (void)testObjectList; // TODO: all permutations
- (void)testGetObject;
- (void)testPutObject; // TODO: all permutations?
- (void)testPostObject; // TODO: all permutations?
- (void)testDeleteObject;
// ASICloudFilesCDNRequest
// ???
@end
... ...
... ... @@ -81,35 +81,10 @@ static NSString *apiKey = @"1c331a7a4a6eb58ca6072afe81e812d0";
GHAssertNotNil(container.name, @"Failed to parse container");
}
ASICloudFilesContainerRequest *limitContainerListRequest = [ASICloudFilesContainerRequest listRequestWithLimit:2];
ASICloudFilesContainerRequest *limitContainerListRequest = [ASICloudFilesContainerRequest listRequestWithLimit:2 marker:nil];
[limitContainerListRequest start];
containers = [limitContainerListRequest containers];
GHAssertTrue([containers count] == 2, @"Failed to limit container list");
/*
ASICloudFilesContainerRequest *markerContainerListRequest = [ASICloudFilesContainerRequest listRequestWithMarker:@"personal"];
[markerContainerListRequest start];
containers = [markerContainerListRequest containers];
NSLog(@"Marker personal Containers list count: %i", [containers count]);
for (int i = 0; i < [containers count]; i++) {
ASICloudFilesContainer *container = [containers objectAtIndex:i];
NSLog(@"%@ - %i objects, %i bytes", container.name, container.count, container.bytes);
}
ASICloudFilesContainerRequest *limitMarkerContainerListRequest = [ASICloudFilesContainerRequest listRequestWithLimit:3 marker:@"cf_service"];
[limitMarkerContainerListRequest start];
containers = [limitMarkerContainerListRequest containers];
NSLog(@"Limit 3 Marker cf_service Containers list count: %i", [containers count]);
for (int i = 0; i < [containers count]; i++) {
ASICloudFilesContainer *container = [containers objectAtIndex:i];
NSLog(@"%@ - %i objects, %i bytes", container.name, container.count, container.bytes);
}
*/
}
- (void)testContainerCreate {
... ... @@ -183,7 +158,6 @@ static NSString *apiKey = @"1c331a7a4a6eb58ca6072afe81e812d0";
GHAssertNotNil(object, @"Failed to retrieve object");
GHAssertNotNil(object.name, @"Failed to parse object name");
//GHAssertNotNil(object.hash, @"Failed to parse object hash"); // FAILS
GHAssertTrue(object.bytes > 0, @"Failed to parse object bytes");
GHAssertNotNil(object.contentType, @"Failed to parse object content type");
GHAssertNotNil(object.lastModified, @"Failed to parse object last modified");
... ... @@ -241,13 +215,11 @@ static NSString *apiKey = @"1c331a7a4a6eb58ca6072afe81e812d0";
ASICloudFilesObjectRequest *request = [ASICloudFilesObjectRequest postObjectRequestWithContainer:@"cf_service" object:object];
[request start];
NSLog(@"\n\n\npost response: %i\n\n\n", [request responseStatusCode]);
GHAssertTrue([request responseStatusCode] == 202, @"Failed to post object metadata");
[metadata release];
} // TODO: all permutations?
}
- (void)testDeleteObject {
[self authenticate];
... ... @@ -258,7 +230,8 @@ static NSString *apiKey = @"1c331a7a4a6eb58ca6072afe81e812d0";
GHAssertNil([deleteRequest error], @"Failed to delete object");
}
// CDN
#pragma mark -
#pragma mark CDN Tests
- (void)testCDNContainerInfo {
[self authenticate];
... ... @@ -309,6 +282,9 @@ static NSString *apiKey = @"1c331a7a4a6eb58ca6072afe81e812d0";
GHAssertNotNil([request cdnURI], @"Failed to POST to CDN container");
}
#pragma mark -
#pragma mark Memory Management
-(void)dealloc {
[networkQueue release];
[super dealloc];
... ...
This diff was suppressed by a .gitattributes entry.