Create application/directory for subdir, if metadata or permissions are applied.
[pithos-ios] / Classes / AccountManager.m
index 6272212..d3b3b3a 100755 (executable)
@@ -26,6 +26,9 @@
 #import "LoadBalancerRequest.h"
 #import "APICallback.h"
 #import "Analytics.h"
+#import "JSON.h"
+
+
 
 
 @implementation AccountManager
@@ -37,7 +40,8 @@
 - (APICallback *)callbackWithRequest:(id)request success:(APIResponseBlock)success failure:(APIResponseBlock)failure {
     APICallback *callback = [[[APICallback alloc] initWithAccount:self.account request:request] autorelease];
     ((OpenStackRequest *)request).delegate = self;
-    ((OpenStackRequest *)request).callback = callback;    
+    ((OpenStackRequest *)request).callback = callback; 
+
     [request setCompletionBlock:^{
         if ([request isSuccess]) {
             success(request);
 #pragma mark -
 #pragma mark Object Storage
 
+
 - (void)getStorageAccountInfo {
     __block OpenStackRequest *request = [OpenStackRequest getStorageAccountInfoRequest:self.account];
     
 }
 
 - (void)getObjects:(Container *)container {
+    [self getObjects:container afterMarker:nil objectsBuffer:nil];
+}
+
+- (void)getObjects:(Container *)container
+       afterMarker:(NSString *)marker
+     objectsBuffer:(NSMutableDictionary *)objectsBuffer {
     if (![self queue]) {
         [self setQueue:[[[NSOperationQueue alloc] init] autorelease]];
     }    
-    GetObjectsRequest *request = [GetObjectsRequest request:self.account container:container];
+    GetObjectsRequest *request = [GetObjectsRequest request:self.account container:container marker:marker objectsBuffer:objectsBuffer];
     [queue addOperation:request];
 }
 
         container.rootFolder = [Folder folder];
         container.rootFolder.objects = objects;
         [self.account persist];
-
+        
         NSNotification *notification = [NSNotification notificationWithName:@"getObjectsSucceeded" object:self.account userInfo:[NSDictionary dictionaryWithObject:container forKey:@"container"]];
         [[NSNotificationCenter defaultCenter] postNotification:notification];
     } else {
             self.account.authToken = [[request responseHeaders] objectForKey:@"X-Auth-Token"];
             self.account.serversURL = [NSURL URLWithString:[[request responseHeaders] objectForKey:@"X-Server-Management-Url"]];
             
-            if ([account.provider isGRNet]) {
-                NSString *filesStorageURL = [NSString stringWithFormat:@"%@%@",
-                                             [[[NSBundle mainBundle] infoDictionary] objectForKey:@"GRNetStorageUrlPrefix"],
+            if (![[request responseHeaders] objectForKey:@"X-Storage-URL"]) {
+                NSString *filesStorageURL = [NSString stringWithFormat:@"%@/v1/%@",
+                                             [self.account.hostURL absoluteString],
                                              [self.account username]];
+
                 self.account.filesURL = [NSURL URLWithString:filesStorageURL];
-            } else {
+            }
+            else {
                 self.account.filesURL = [NSURL URLWithString:[[request responseHeaders] objectForKey:@"X-Storage-Url"]];
-                       }
+            }
             
+            self.account.pithosPublicLinkURLPrefix = self.account.hostURL;
+            self.account.pithosLoginURLPrefix = [NSURL URLWithString:
+                                            [[self.account.hostURL absoluteString]
+                                             stringByAppendingString:@"/login"]];
             self.account.cdnURL = [NSURL URLWithString:[[request responseHeaders] objectForKey:@"X-Cdn-Management-Url"]];
             
             [self.account persist];
     }];
 }
 
+
 #pragma mark -
 #pragma mark Memory Management