Statistics
| Branch: | Tag: | Revision:

root / pithos-macos / PithosObjectNode.m @ d8426ffb

History | View | Annotate | Download (13.4 kB)

1 d8d08dc1 Miltiadis Vasilakis
//
2 857217b0 Miltiadis Vasilakis
//  PithosObjectNode.m
3 d8d08dc1 Miltiadis Vasilakis
//  pithos-macos
4 d8d08dc1 Miltiadis Vasilakis
//
5 919cb043 Miltiadis Vasilakis
// Copyright 2011-2012 GRNET S.A. All rights reserved.
6 d8d08dc1 Miltiadis Vasilakis
//
7 d8d08dc1 Miltiadis Vasilakis
// Redistribution and use in source and binary forms, with or
8 d8d08dc1 Miltiadis Vasilakis
// without modification, are permitted provided that the following
9 d8d08dc1 Miltiadis Vasilakis
// conditions are met:
10 d8d08dc1 Miltiadis Vasilakis
// 
11 d8d08dc1 Miltiadis Vasilakis
//   1. Redistributions of source code must retain the above
12 d8d08dc1 Miltiadis Vasilakis
//      copyright notice, this list of conditions and the following
13 d8d08dc1 Miltiadis Vasilakis
//      disclaimer.
14 d8d08dc1 Miltiadis Vasilakis
// 
15 d8d08dc1 Miltiadis Vasilakis
//   2. Redistributions in binary form must reproduce the above
16 d8d08dc1 Miltiadis Vasilakis
//      copyright notice, this list of conditions and the following
17 d8d08dc1 Miltiadis Vasilakis
//      disclaimer in the documentation and/or other materials
18 d8d08dc1 Miltiadis Vasilakis
//      provided with the distribution.
19 d8d08dc1 Miltiadis Vasilakis
// 
20 d8d08dc1 Miltiadis Vasilakis
// THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
21 d8d08dc1 Miltiadis Vasilakis
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 d8d08dc1 Miltiadis Vasilakis
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 d8d08dc1 Miltiadis Vasilakis
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
24 d8d08dc1 Miltiadis Vasilakis
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 d8d08dc1 Miltiadis Vasilakis
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 d8d08dc1 Miltiadis Vasilakis
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 d8d08dc1 Miltiadis Vasilakis
// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 d8d08dc1 Miltiadis Vasilakis
// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 d8d08dc1 Miltiadis Vasilakis
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 d8d08dc1 Miltiadis Vasilakis
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 d8d08dc1 Miltiadis Vasilakis
// POSSIBILITY OF SUCH DAMAGE.
32 d8d08dc1 Miltiadis Vasilakis
// 
33 d8d08dc1 Miltiadis Vasilakis
// The views and conclusions contained in the software and
34 d8d08dc1 Miltiadis Vasilakis
// documentation are those of the authors and should not be
35 d8d08dc1 Miltiadis Vasilakis
// interpreted as representing official policies, either expressed
36 d8d08dc1 Miltiadis Vasilakis
// or implied, of GRNET S.A.
37 d8d08dc1 Miltiadis Vasilakis
38 9f3a92de Miltiadis Vasilakis
#import "PithosObjectNode.h"
39 e5fdf4d9 Miltiadis Vasilakis
#import "ASIPithosRequest.h"
40 919cb043 Miltiadis Vasilakis
#import "ASIPithos.h"
41 5915687e Miltiadis Vasilakis
#import "ASIPithosObjectRequest.h"
42 605c8932 Miltiadis Vasilakis
#import "ASIPithosContainer.h"
43 605c8932 Miltiadis Vasilakis
#import "ASIPithosObject.h"
44 5915687e Miltiadis Vasilakis
#import "ASIDownloadCache.h"
45 1b1e6fa1 Miltiadis Vasilakis
#import "PithosUtilities.h"
46 515cd8db Miltiadis Vasilakis
#import "PithosObjectNodeInfoController.h"
47 e5fdf4d9 Miltiadis Vasilakis
48 9f3a92de Miltiadis Vasilakis
@implementation PithosObjectNode
49 919cb043 Miltiadis Vasilakis
@synthesize pithos, pithosContainer, pithosObject;
50 c6f07a3c Miltiadis Vasilakis
@synthesize isPublic;
51 e5fdf4d9 Miltiadis Vasilakis
52 d8d08dc1 Miltiadis Vasilakis
#pragma mark -
53 d8d08dc1 Miltiadis Vasilakis
#pragma mark Object Lifecycle
54 d8d08dc1 Miltiadis Vasilakis
55 919cb043 Miltiadis Vasilakis
- (id)initWithPithos:(ASIPithos *)aPithos 
56 919cb043 Miltiadis Vasilakis
     pithosContainer:(ASIPithosContainer *)aPithosContainer 
57 919cb043 Miltiadis Vasilakis
        pithosObject:(ASIPithosObject *)aPithosObject {
58 d8d08dc1 Miltiadis Vasilakis
    if ((self = [super init])) {
59 919cb043 Miltiadis Vasilakis
        self.pithos = aPithos;
60 5915687e Miltiadis Vasilakis
        self.pithosContainer = aPithosContainer;
61 5915687e Miltiadis Vasilakis
        self.pithosObject = aPithosObject;
62 d8d08dc1 Miltiadis Vasilakis
        isLeafItem = YES;
63 d8d08dc1 Miltiadis Vasilakis
    }
64 d8d08dc1 Miltiadis Vasilakis
    return self;
65 d8d08dc1 Miltiadis Vasilakis
}
66 d8d08dc1 Miltiadis Vasilakis
67 d8d08dc1 Miltiadis Vasilakis
- (void)dealloc {
68 5915687e Miltiadis Vasilakis
    [refreshMetadataObjectRequest clearDelegatesAndCancel];
69 5915687e Miltiadis Vasilakis
    [refreshMetadataObjectRequest release];
70 5915687e Miltiadis Vasilakis
    [applyMetadataObjectRequest clearDelegatesAndCancel];
71 5915687e Miltiadis Vasilakis
    [applyMetadataObjectRequest release];
72 9f3a92de Miltiadis Vasilakis
    [pithosObject release];
73 9f3a92de Miltiadis Vasilakis
    [pithosContainer release];
74 919cb043 Miltiadis Vasilakis
    [pithos release];
75 d8d08dc1 Miltiadis Vasilakis
    [super dealloc];
76 d8d08dc1 Miltiadis Vasilakis
}
77 d8d08dc1 Miltiadis Vasilakis
78 d8d08dc1 Miltiadis Vasilakis
#pragma mark -
79 d8d08dc1 Miltiadis Vasilakis
#pragma mark Properties
80 d8d08dc1 Miltiadis Vasilakis
81 d8426ffb Miltiadis Vasilakis
- (void)setPithos:(ASIPithos *)aPithos {
82 d8426ffb Miltiadis Vasilakis
    if (aPithos && ![aPithos isEqualTo:pithos]) {
83 d8426ffb Miltiadis Vasilakis
        [pithos release];
84 d8426ffb Miltiadis Vasilakis
        pithos = [aPithos retain];
85 d8426ffb Miltiadis Vasilakis
        [url release];
86 d8426ffb Miltiadis Vasilakis
        url = nil;
87 d8426ffb Miltiadis Vasilakis
    }
88 d8426ffb Miltiadis Vasilakis
}
89 d8426ffb Miltiadis Vasilakis
90 e5fdf4d9 Miltiadis Vasilakis
- (NSString *)url {
91 af3b9f06 Miltiadis Vasilakis
    if (url == nil)
92 af3b9f06 Miltiadis Vasilakis
        url = [[NSString alloc] initWithFormat:@"object %@/%@/%@%@", 
93 919cb043 Miltiadis Vasilakis
               (sharingAccount ? [pithos storageURLWithAuthUser:sharingAccount] : pithos.storageURL), 
94 af3b9f06 Miltiadis Vasilakis
               pithosContainer.name, 
95 af3b9f06 Miltiadis Vasilakis
               pithosObject.name, 
96 af3b9f06 Miltiadis Vasilakis
               (shared ? @"?shared" : @"")];
97 e5fdf4d9 Miltiadis Vasilakis
    return url;
98 e5fdf4d9 Miltiadis Vasilakis
}
99 e5fdf4d9 Miltiadis Vasilakis
100 d8d08dc1 Miltiadis Vasilakis
- (NSArray *)children {
101 d8d08dc1 Miltiadis Vasilakis
    return nil;
102 d8d08dc1 Miltiadis Vasilakis
}
103 d8d08dc1 Miltiadis Vasilakis
104 d8d08dc1 Miltiadis Vasilakis
- (NSString *)displayName {
105 d8d08dc1 Miltiadis Vasilakis
    if (displayName == nil) {
106 9f3a92de Miltiadis Vasilakis
        displayName = [pithosObject.name lastPathComponent];
107 9f3a92de Miltiadis Vasilakis
        if([pithosObject.name hasSuffix:@"/"])
108 d8d08dc1 Miltiadis Vasilakis
            displayName = [displayName stringByAppendingString:@"/"];
109 d8d08dc1 Miltiadis Vasilakis
        [displayName retain];
110 d8d08dc1 Miltiadis Vasilakis
    }
111 d8d08dc1 Miltiadis Vasilakis
    return [[displayName copy] autorelease];
112 d8d08dc1 Miltiadis Vasilakis
}
113 d8d08dc1 Miltiadis Vasilakis
114 4ae10a2b Miltiadis Vasilakis
- (void)setDisplayName:(NSString *)aDisplayName {    
115 4ae10a2b Miltiadis Vasilakis
}
116 4ae10a2b Miltiadis Vasilakis
117 e5fdf4d9 Miltiadis Vasilakis
- (NSImage *)icon {
118 155f0dfd Miltiadis Vasilakis
    if (icon == nil)
119 9f3a92de Miltiadis Vasilakis
        icon = [[[NSWorkspace sharedWorkspace] iconForFileType:[pithosObject.name pathExtension]] retain];
120 e5fdf4d9 Miltiadis Vasilakis
    return icon;
121 e5fdf4d9 Miltiadis Vasilakis
}
122 e5fdf4d9 Miltiadis Vasilakis
123 c6f07a3c Miltiadis Vasilakis
- (void)setPithosObject:(ASIPithosObject *)aPithosObject {
124 c6f07a3c Miltiadis Vasilakis
    if (![pithosObject isEqualTo:aPithosObject]) {
125 c6f07a3c Miltiadis Vasilakis
        [pithosObject release];
126 c6f07a3c Miltiadis Vasilakis
        pithosObject = [aPithosObject retain];
127 c6f07a3c Miltiadis Vasilakis
    }
128 c6f07a3c Miltiadis Vasilakis
    self.isPublic = (pithosObject.publicURI != nil);
129 20f54e18 Miltiadis Vasilakis
    // Refresh browser if the object is in my shared and is no longer shared
130 4ae10a2b Miltiadis Vasilakis
    if (shared && !pithosObject.sharing)
131 20f54e18 Miltiadis Vasilakis
        [[NSNotificationCenter defaultCenter] postNotificationName:@"PithosBrowserRefreshNeeeded" object:self];
132 5915687e Miltiadis Vasilakis
}
133 5915687e Miltiadis Vasilakis
134 5915687e Miltiadis Vasilakis
#pragma mark -
135 5915687e Miltiadis Vasilakis
#pragma mark ASIHTTPRequestDelegate
136 5915687e Miltiadis Vasilakis
137 857217b0 Miltiadis Vasilakis
- (void)objectRequestFinished:(ASIPithosObjectRequest *)request {
138 5f54c6be Miltiadis Vasilakis
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
139 5915687e Miltiadis Vasilakis
    NSLog(@"URL: %@", [request url]);
140 5915687e Miltiadis Vasilakis
    NSLog(@"cached: %d", [request didUseCachedResponse]);
141 5915687e Miltiadis Vasilakis
    
142 5915687e Miltiadis Vasilakis
    if ([request isEqualTo:applyMetadataObjectRequest]) {
143 20f54e18 Miltiadis Vasilakis
        int responseStatusCode = applyMetadataObjectRequest.responseStatusCode;
144 20f54e18 Miltiadis Vasilakis
        if (responseStatusCode != 202)
145 1b1e6fa1 Miltiadis Vasilakis
            [PithosUtilities unexpectedResponseStatusAlertWithRequest:applyMetadataObjectRequest];
146 5915687e Miltiadis Vasilakis
        @synchronized(self) {
147 5915687e Miltiadis Vasilakis
            [applyMetadataObjectRequest release];
148 5915687e Miltiadis Vasilakis
            applyMetadataObjectRequest = nil;
149 5915687e Miltiadis Vasilakis
        }
150 20f54e18 Miltiadis Vasilakis
        if (responseStatusCode == 202)
151 20f54e18 Miltiadis Vasilakis
            [self refreshInfo];
152 5915687e Miltiadis Vasilakis
    } else if ([request isEqualTo:refreshMetadataObjectRequest]) {
153 515cd8db Miltiadis Vasilakis
        [[pithosNodeInfoController window] makeFirstResponder:nil];
154 5915687e Miltiadis Vasilakis
        self.pithosObject = [refreshMetadataObjectRequest object];
155 5915687e Miltiadis Vasilakis
        @synchronized(self) {
156 5915687e Miltiadis Vasilakis
            [refreshMetadataObjectRequest release];
157 5915687e Miltiadis Vasilakis
            refreshMetadataObjectRequest = nil;
158 5915687e Miltiadis Vasilakis
        }
159 5915687e Miltiadis Vasilakis
    }
160 5f54c6be Miltiadis Vasilakis
    [pool drain];
161 5915687e Miltiadis Vasilakis
}
162 5915687e Miltiadis Vasilakis
163 857217b0 Miltiadis Vasilakis
- (void)objectRequestFailed:(ASIPithosObjectRequest *)request {
164 5f54c6be Miltiadis Vasilakis
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
165 d8426ffb Miltiadis Vasilakis
    NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
166 d8426ffb Miltiadis Vasilakis
    if (retries > 0) {
167 d8426ffb Miltiadis Vasilakis
        ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities copyRequest:request];
168 d8426ffb Miltiadis Vasilakis
        [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
169 d8426ffb Miltiadis Vasilakis
        if ([request isEqualTo:applyMetadataObjectRequest]) {
170 d8426ffb Miltiadis Vasilakis
            @synchronized(self) {
171 d8426ffb Miltiadis Vasilakis
                [applyMetadataObjectRequest release];
172 d8426ffb Miltiadis Vasilakis
                applyMetadataObjectRequest = newRequest;
173 d8426ffb Miltiadis Vasilakis
            }
174 d8426ffb Miltiadis Vasilakis
        } else if ([request isEqualTo:refreshMetadataObjectRequest]) {
175 d8426ffb Miltiadis Vasilakis
            @synchronized(self) {
176 d8426ffb Miltiadis Vasilakis
                [refreshMetadataObjectRequest release];
177 d8426ffb Miltiadis Vasilakis
                refreshMetadataObjectRequest = newRequest;
178 d8426ffb Miltiadis Vasilakis
            }
179 5915687e Miltiadis Vasilakis
        }
180 d8426ffb Miltiadis Vasilakis
        [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
181 d8426ffb Miltiadis Vasilakis
    } else {
182 d8426ffb Miltiadis Vasilakis
        if ([request isEqualTo:applyMetadataObjectRequest]) {
183 d8426ffb Miltiadis Vasilakis
            dispatch_async(dispatch_get_main_queue(), ^{
184 d8426ffb Miltiadis Vasilakis
                [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataObjectRequest];
185 d8426ffb Miltiadis Vasilakis
            });
186 d8426ffb Miltiadis Vasilakis
            @synchronized(self) {
187 d8426ffb Miltiadis Vasilakis
                [applyMetadataObjectRequest release];
188 d8426ffb Miltiadis Vasilakis
                applyMetadataObjectRequest = nil;
189 d8426ffb Miltiadis Vasilakis
            }
190 d8426ffb Miltiadis Vasilakis
        } else if ([request isEqualTo:refreshMetadataObjectRequest]) {
191 d8426ffb Miltiadis Vasilakis
            dispatch_async(dispatch_get_main_queue(), ^{
192 d8426ffb Miltiadis Vasilakis
                [PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataObjectRequest];
193 d8426ffb Miltiadis Vasilakis
            });
194 d8426ffb Miltiadis Vasilakis
            @synchronized(self) {
195 d8426ffb Miltiadis Vasilakis
                [refreshMetadataObjectRequest release];
196 d8426ffb Miltiadis Vasilakis
                refreshMetadataObjectRequest = nil;
197 d8426ffb Miltiadis Vasilakis
            }
198 5915687e Miltiadis Vasilakis
        }
199 5915687e Miltiadis Vasilakis
    }
200 5f54c6be Miltiadis Vasilakis
    [pool drain];
201 5915687e Miltiadis Vasilakis
}
202 5915687e Miltiadis Vasilakis
203 515cd8db Miltiadis Vasilakis
#pragma mark -
204 4ae10a2b Miltiadis Vasilakis
#pragma mark Info
205 4ae10a2b Miltiadis Vasilakis
206 4ae10a2b Miltiadis Vasilakis
- (void)applyInfo {
207 4ae10a2b Miltiadis Vasilakis
    @synchronized(self) {
208 4ae10a2b Miltiadis Vasilakis
        if (applyMetadataObjectRequest == nil) {
209 4ae10a2b Miltiadis Vasilakis
            [[pithosNodeInfoController window] makeFirstResponder:nil];
210 af3b9f06 Miltiadis Vasilakis
            if (sharingAccount) {
211 919cb043 Miltiadis Vasilakis
                applyMetadataObjectRequest = [[ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos 
212 919cb043 Miltiadis Vasilakis
                                                                                              containerName:pithosContainer.name 
213 919cb043 Miltiadis Vasilakis
                                                                                                 objectName:pithosObject.name 
214 919cb043 Miltiadis Vasilakis
                                                                                            contentEncoding:nil 
215 919cb043 Miltiadis Vasilakis
                                                                                         contentDisposition:nil 
216 919cb043 Miltiadis Vasilakis
                                                                                                   manifest:nil 
217 919cb043 Miltiadis Vasilakis
                                                                                                    sharing:nil
218 919cb043 Miltiadis Vasilakis
                                                                                                   isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) 
219 919cb043 Miltiadis Vasilakis
                                                                                                   metadata:pithosObject.metadata
220 919cb043 Miltiadis Vasilakis
                                                                                                     update:NO] retain];
221 919cb043 Miltiadis Vasilakis
                [applyMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
222 af3b9f06 Miltiadis Vasilakis
            } else {
223 919cb043 Miltiadis Vasilakis
                applyMetadataObjectRequest = [[ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos 
224 919cb043 Miltiadis Vasilakis
                                                                                              containerName:pithosContainer.name 
225 919cb043 Miltiadis Vasilakis
                                                                                                 objectName:pithosObject.name 
226 919cb043 Miltiadis Vasilakis
                                                                                            contentEncoding:pithosObject.contentEncoding 
227 919cb043 Miltiadis Vasilakis
                                                                                         contentDisposition:pithosObject.contentDisposition 
228 919cb043 Miltiadis Vasilakis
                                                                                                   manifest:pithosObject.manifest 
229 919cb043 Miltiadis Vasilakis
                                                                                                    sharing:(pithosObject.sharing ? pithosObject.sharing : @"")
230 919cb043 Miltiadis Vasilakis
                                                                                                   isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) 
231 919cb043 Miltiadis Vasilakis
                                                                                                   metadata:pithosObject.metadata
232 919cb043 Miltiadis Vasilakis
                                                                                                     update:NO] retain];
233 af3b9f06 Miltiadis Vasilakis
            }
234 4ae10a2b Miltiadis Vasilakis
            applyMetadataObjectRequest.delegate = self;
235 5f54c6be Miltiadis Vasilakis
            applyMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
236 5f54c6be Miltiadis Vasilakis
            applyMetadataObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
237 5f54c6be Miltiadis Vasilakis
            applyMetadataObjectRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
238 5f54c6be Miltiadis Vasilakis
                                                   [NSNumber numberWithInteger:NSOperationQueuePriorityHigh], @"priority", 
239 5f54c6be Miltiadis Vasilakis
                                                   [NSNumber numberWithUnsignedInteger:10], @"retries", 
240 5f54c6be Miltiadis Vasilakis
                                                   NSStringFromSelector(@selector(objectRequestFinished:)), @"didFinishSelector", 
241 5f54c6be Miltiadis Vasilakis
                                                   NSStringFromSelector(@selector(objectRequestFailed:)), @"didFailSelector", 
242 5f54c6be Miltiadis Vasilakis
                                                   nil];
243 1b1e6fa1 Miltiadis Vasilakis
            [[PithosUtilities prepareRequest:applyMetadataObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
244 4ae10a2b Miltiadis Vasilakis
        }
245 4ae10a2b Miltiadis Vasilakis
    }
246 4ae10a2b Miltiadis Vasilakis
}
247 4ae10a2b Miltiadis Vasilakis
248 4ae10a2b Miltiadis Vasilakis
- (void)refreshInfo {
249 4ae10a2b Miltiadis Vasilakis
    @synchronized(self) {
250 4ae10a2b Miltiadis Vasilakis
        if (refreshMetadataObjectRequest == nil) {
251 919cb043 Miltiadis Vasilakis
            refreshMetadataObjectRequest = [[ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos 
252 919cb043 Miltiadis Vasilakis
                                                                                      containerName:pithosContainer.name 
253 919cb043 Miltiadis Vasilakis
                                                                                         objectName:pithosObject.name] retain];
254 af3b9f06 Miltiadis Vasilakis
            if (sharingAccount)
255 919cb043 Miltiadis Vasilakis
                [refreshMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
256 4ae10a2b Miltiadis Vasilakis
            refreshMetadataObjectRequest.delegate = self;
257 5f54c6be Miltiadis Vasilakis
            refreshMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
258 5f54c6be Miltiadis Vasilakis
            refreshMetadataObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
259 5f54c6be Miltiadis Vasilakis
            refreshMetadataObjectRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
260 5f54c6be Miltiadis Vasilakis
                                                     [NSNumber numberWithInteger:NSOperationQueuePriorityHigh], @"priority", 
261 5f54c6be Miltiadis Vasilakis
                                                     [NSNumber numberWithUnsignedInteger:10], @"retries", 
262 5f54c6be Miltiadis Vasilakis
                                                     NSStringFromSelector(@selector(objectRequestFinished:)), @"didFinishSelector", 
263 5f54c6be Miltiadis Vasilakis
                                                     NSStringFromSelector(@selector(objectRequestFailed:)), @"didFailSelector", 
264 5f54c6be Miltiadis Vasilakis
                                                     nil];
265 4ae10a2b Miltiadis Vasilakis
            refreshMetadataObjectRequest.downloadCache = [ASIDownloadCache sharedCache];
266 1b1e6fa1 Miltiadis Vasilakis
            [[PithosUtilities prepareRequest:refreshMetadataObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
267 4ae10a2b Miltiadis Vasilakis
        }
268 4ae10a2b Miltiadis Vasilakis
    }
269 4ae10a2b Miltiadis Vasilakis
}
270 4ae10a2b Miltiadis Vasilakis
271 4ae10a2b Miltiadis Vasilakis
#pragma mark -
272 515cd8db Miltiadis Vasilakis
#pragma mark Actions
273 515cd8db Miltiadis Vasilakis
274 515cd8db Miltiadis Vasilakis
- (void)showPithosNodeInfo:(id)sender {
275 515cd8db Miltiadis Vasilakis
    if (!pithosNodeInfoController)
276 515cd8db Miltiadis Vasilakis
        pithosNodeInfoController = [[PithosObjectNodeInfoController alloc] initWithPithosNode:self];
277 515cd8db Miltiadis Vasilakis
    [pithosNodeInfoController showWindow:sender];
278 515cd8db Miltiadis Vasilakis
    [[pithosNodeInfoController window] makeKeyAndOrderFront:sender];
279 515cd8db Miltiadis Vasilakis
    [NSApp activateIgnoringOtherApps:YES];
280 515cd8db Miltiadis Vasilakis
}
281 515cd8db Miltiadis Vasilakis
282 d8d08dc1 Miltiadis Vasilakis
@end