X-Git-Url: https://code.grnet.gr/git/pithos-macos/blobdiff_plain/bc768c455aa9ffd44c88d173a26df363b3b5f350..6d9d5dce6b6df63e7e44314f25ee2a39b953397d:/pithos-macos/PithosObjectNode.m diff --git a/pithos-macos/PithosObjectNode.m b/pithos-macos/PithosObjectNode.m index 1cf8cf1..ffe8fd1 100644 --- a/pithos-macos/PithosObjectNode.m +++ b/pithos-macos/PithosObjectNode.m @@ -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 @@ -48,20 +48,19 @@ #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)initWithPithos:(ASIPithos *)aPithos - pithosContainer:(ASIPithosContainer *)aPithosContainer - pithosObject:(ASIPithosObject *)aPithosObject { - if ((self = [super init])) { - self.pithos = aPithos; +- (id)initWithPithosAccountManager:(PithosAccount *)aPithosAccountManager + pithosContainer:(ASIPithosContainer *)aPithosContainer + pithosObject:(ASIPithosObject *)aPithosObject { + if ((self = [super initWithPithosAccountManager:aPithosAccountManager])) { + isLeafItem = YES; self.pithosContainer = aPithosContainer; self.pithosObject = aPithosObject; - isLeafItem = YES; } return self; } @@ -83,7 +82,7 @@ if (displayname) { self.translatedModifiedBy = displayname; } else { - [pithosAccountManager updateUserCatalogForForDisplaynames:nil UUIDs:[NSArray arrayWithObject:pithosObject.modifiedBy]]; + [pithosAccountManager updateUserCatalogForDisplaynames:nil UUIDs:[NSArray arrayWithObject:pithosObject.modifiedBy]]; self.translatedModifiedBy = [pithosAccountManager displaynameForUUID:pithosObject.modifiedBy safe:YES]; } } else { @@ -102,7 +101,7 @@ [UUIDs removeObject:@""]; [UUIDs removeObject:@"*"]; if (UUIDs.count) { - [pithosAccountManager updateUserCatalogForForDisplaynames:nil UUIDs:[UUIDs allObjects]]; + [pithosAccountManager updateUserCatalogForDisplaynames:nil UUIDs:[UUIDs allObjects]]; } NSMutableArray *newTranslatedPermissions = [NSMutableArray arrayWithCapacity:pithosObject.permissions.count]; @@ -120,21 +119,12 @@ #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 { @@ -234,7 +224,8 @@ @autoreleasepool { NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; if (retries > 0) { - ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities copyRequest:request]; + ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities retryWithUpdatedURLRequest:request + andPithosAccountManager:pithosAccountManager]; [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; if ([request isEqualTo:applyMetadataObjectRequest]) { @synchronized(self) { @@ -279,7 +270,7 @@ 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 @@ -289,7 +280,7 @@ 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) { @@ -314,7 +305,7 @@ [allUsers removeObject:@""]; [allUsers removeObject:@"*"]; if (allUsers.count) { - ASIPithosRequest *userCatalogRequest = [pithosAccountManager updateUserCatalogForForDisplaynames:[allUsers allObjects] + ASIPithosRequest *userCatalogRequest = [pithosAccountManager updateUserCatalogForDisplaynames:[allUsers allObjects] UUIDs:nil]; if (userCatalogRequest.error || ((userCatalogRequest.responseStatusCode != 200) && (userCatalogRequest.responseStatusCode != 404))) { return; @@ -409,7 +400,7 @@ } pithosObject.permissions = permissions; - self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos + self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithosAccountManager.pithos containerName:pithosContainer.name objectName:pithosObject.name contentEncoding:pithosObject.contentEncoding @@ -437,11 +428,11 @@ - (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:); @@ -465,11 +456,11 @@ - (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:);