Refactor use of pithos objects to accommodate
[pithos-macos] / pithos-macos / PithosObjectNode.m
index 973a414..a49c6bb 100644 (file)
@@ -2,7 +2,7 @@
 //  PithosObjectNode.m
 //  pithos-macos
 //
-// Copyright 2011-2012 GRNET S.A. All rights reserved.
+// Copyright 2011-2013 GRNET S.A. All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or
 // without modification, are permitted provided that the following
 #import "PithosObjectNodeInfoController.h"
 
 @implementation PithosObjectNode
-@synthesize pithos, pithosContainer, pithosObject, versions, applyMetadataObjectRequest, refreshMetadataObjectRequest, refreshVersionsObjectRequest;
+@synthesize pithosContainer, pithosObject, versions, applyMetadataObjectRequest, refreshMetadataObjectRequest, refreshVersionsObjectRequest;
 @synthesize isPublic, translatedModifiedBy, translatedPermissions;
 
 #pragma mark -
 #pragma mark Object Lifecycle
 
 - (id)initWithPithosAccountManager:(PithosAccount *)aPithosAccountManager
-                         andPithos:(ASIPithos *)aPithos
                    pithosContainer:(ASIPithosContainer *)aPithosContainer
                       pithosObject:(ASIPithosObject *)aPithosObject {
     if ((self = [super initWithPithosAccountManager:aPithosAccountManager])) {
-        pithos = aPithos;
         isLeafItem = YES;
         self.pithosContainer = aPithosContainer;
         self.pithosObject = aPithosObject;
 #pragma mark -
 #pragma mark Properties
 
-- (void)setPithos:(ASIPithos *)aPithos {
-    if (aPithos && ![aPithos isEqualTo:pithos]) {
-        pithos = aPithos;
-        url = nil;
-    }
-}
-
 - (NSString *)url {
-    if (url == nil)
-        url = [[NSString alloc] initWithFormat:@"object %@/%@/%@%@", 
-               (sharingAccount ? [pithos storageURLWithAuthUser:sharingAccount] : pithos.storageURL), 
-               pithosContainer.name, 
-               pithosObject.name, 
-               (shared ? @"?shared" : @"")];
-    return url;
+    return [NSString stringWithFormat:@"@object@%@/%@/%@%@",
+            (sharingAccount ? sharingAccount : pithosAccountManager.pithos.authUser),
+            pithosContainer.name,
+            pithosObject.name,
+            (shared ? @"?shared" : @"")];
 }
 
 - (NSArray *)children {
         if (applyMetadataObjectRequest == nil) {
             [[pithosNodeInfoController window] makeFirstResponder:nil];
             if (sharingAccount) {
-                self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos
+                self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithosAccountManager.pithos
                                                                                                   containerName:pithosContainer.name
                                                                                                      objectName:pithosObject.name
                                                                                                 contentEncoding:nil
                                                                                                        isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse)
                                                                                                        metadata:pithosObject.metadata
                                                                                                          update:NO];
-                [applyMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
+                [applyMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos];
             } else {
                 NSMutableArray *permissions = [NSMutableArray array];
                 if (translatedPermissions.count) {
                 }
                 pithosObject.permissions = permissions;
             
-                self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos
+                self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithosAccountManager.pithos
                                                                                                   containerName:pithosContainer.name
                                                                                                      objectName:pithosObject.name
                                                                                                 contentEncoding:pithosObject.contentEncoding
 - (void)refreshInfo {
     @synchronized(self) {
         if (refreshMetadataObjectRequest == nil) {
-            self.refreshMetadataObjectRequest = [ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos
+            self.refreshMetadataObjectRequest = [ASIPithosObjectRequest objectMetadataRequestWithPithos:pithosAccountManager.pithos
                                                                                           containerName:pithosContainer.name
                                                                                              objectName:pithosObject.name];
             if (sharingAccount)
-                [refreshMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
+                [refreshMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos];
             refreshMetadataObjectRequest.delegate = self;
             refreshMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
             refreshMetadataObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
 - (void)refreshVersions {
     @synchronized(self) {
         if (refreshVersionsObjectRequest == nil) {
-            self.refreshVersionsObjectRequest = [ASIPithosObjectRequest objectVersionsRequestWithPithos:pithos
+            self.refreshVersionsObjectRequest = [ASIPithosObjectRequest objectVersionsRequestWithPithos:pithosAccountManager.pithos
                                                                                           containerName:pithosContainer.name
                                                                                              objectName:pithosObject.name];
             if (sharingAccount)
-                [refreshVersionsObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
+                [refreshVersionsObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithosAccountManager.pithos];
             refreshVersionsObjectRequest.delegate = self;
             refreshVersionsObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
             refreshVersionsObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);