root / pithos-macos / PithosObjectNode.m @ 46b46b83
History | View | Annotate | Download (14.6 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 | 46b46b83 | Miltiadis Vasilakis | - (void)setLimitedPithosObject:(ASIPithosObject *)aPithosObject { |
135 | 46b46b83 | Miltiadis Vasilakis | if (![pithosObject isEqualTo:aPithosObject]) { |
136 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.subdir = aPithosObject.subdir; |
137 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.name = aPithosObject.name; |
138 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.hash = aPithosObject.hash; |
139 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.objectHash = aPithosObject.objectHash; |
140 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.UUID = aPithosObject.UUID; |
141 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.bytes = aPithosObject.bytes; |
142 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.contentType = aPithosObject.contentType; |
143 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.lastModified = aPithosObject.lastModified; |
144 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.version = aPithosObject.version; |
145 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.versionTimestamp = aPithosObject.versionTimestamp; |
146 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.modifiedBy = aPithosObject.modifiedBy; |
147 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.sharedBy = aPithosObject.sharedBy; |
148 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.allowedTo = aPithosObject.allowedTo; |
149 | 46b46b83 | Miltiadis Vasilakis | if (!pithosNodeInfoController) { |
150 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.sharing = aPithosObject.sharing; |
151 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject.publicURI = aPithosObject.publicURI; |
152 | 46b46b83 | Miltiadis Vasilakis | self.pithosObject = pithosObject; |
153 | 46b46b83 | Miltiadis Vasilakis | } |
154 | 46b46b83 | Miltiadis Vasilakis | } |
155 | 46b46b83 | Miltiadis Vasilakis | } |
156 | 46b46b83 | Miltiadis Vasilakis | |
157 | 5915687e | Miltiadis Vasilakis | #pragma mark - |
158 | 5915687e | Miltiadis Vasilakis | #pragma mark ASIHTTPRequestDelegate |
159 | 5915687e | Miltiadis Vasilakis | |
160 | 857217b0 | Miltiadis Vasilakis | - (void)objectRequestFinished:(ASIPithosObjectRequest *)request { |
161 | 5f54c6be | Miltiadis Vasilakis | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
162 | 5915687e | Miltiadis Vasilakis | NSLog(@"URL: %@", [request url]); |
163 | 5915687e | Miltiadis Vasilakis | NSLog(@"cached: %d", [request didUseCachedResponse]); |
164 | 5915687e | Miltiadis Vasilakis | |
165 | 5915687e | Miltiadis Vasilakis | if ([request isEqualTo:applyMetadataObjectRequest]) { |
166 | 20f54e18 | Miltiadis Vasilakis | int responseStatusCode = applyMetadataObjectRequest.responseStatusCode; |
167 | 20f54e18 | Miltiadis Vasilakis | if (responseStatusCode != 202) |
168 | 1b1e6fa1 | Miltiadis Vasilakis | [PithosUtilities unexpectedResponseStatusAlertWithRequest:applyMetadataObjectRequest]; |
169 | 5915687e | Miltiadis Vasilakis | @synchronized(self) { |
170 | 5915687e | Miltiadis Vasilakis | [applyMetadataObjectRequest release]; |
171 | 5915687e | Miltiadis Vasilakis | applyMetadataObjectRequest = nil; |
172 | 5915687e | Miltiadis Vasilakis | } |
173 | 20f54e18 | Miltiadis Vasilakis | if (responseStatusCode == 202) |
174 | 20f54e18 | Miltiadis Vasilakis | [self refreshInfo]; |
175 | 5915687e | Miltiadis Vasilakis | } else if ([request isEqualTo:refreshMetadataObjectRequest]) { |
176 | 515cd8db | Miltiadis Vasilakis | [[pithosNodeInfoController window] makeFirstResponder:nil]; |
177 | 5915687e | Miltiadis Vasilakis | self.pithosObject = [refreshMetadataObjectRequest object]; |
178 | 5915687e | Miltiadis Vasilakis | @synchronized(self) { |
179 | 5915687e | Miltiadis Vasilakis | [refreshMetadataObjectRequest release]; |
180 | 5915687e | Miltiadis Vasilakis | refreshMetadataObjectRequest = nil; |
181 | 5915687e | Miltiadis Vasilakis | } |
182 | 5915687e | Miltiadis Vasilakis | } |
183 | 5f54c6be | Miltiadis Vasilakis | [pool drain]; |
184 | 5915687e | Miltiadis Vasilakis | } |
185 | 5915687e | Miltiadis Vasilakis | |
186 | 857217b0 | Miltiadis Vasilakis | - (void)objectRequestFailed:(ASIPithosObjectRequest *)request { |
187 | 5f54c6be | Miltiadis Vasilakis | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
188 | d8426ffb | Miltiadis Vasilakis | NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
189 | d8426ffb | Miltiadis Vasilakis | if (retries > 0) { |
190 | d8426ffb | Miltiadis Vasilakis | ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities copyRequest:request]; |
191 | d8426ffb | Miltiadis Vasilakis | [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
192 | d8426ffb | Miltiadis Vasilakis | if ([request isEqualTo:applyMetadataObjectRequest]) { |
193 | d8426ffb | Miltiadis Vasilakis | @synchronized(self) { |
194 | d8426ffb | Miltiadis Vasilakis | [applyMetadataObjectRequest release]; |
195 | d8426ffb | Miltiadis Vasilakis | applyMetadataObjectRequest = newRequest; |
196 | d8426ffb | Miltiadis Vasilakis | } |
197 | d8426ffb | Miltiadis Vasilakis | } else if ([request isEqualTo:refreshMetadataObjectRequest]) { |
198 | d8426ffb | Miltiadis Vasilakis | @synchronized(self) { |
199 | d8426ffb | Miltiadis Vasilakis | [refreshMetadataObjectRequest release]; |
200 | d8426ffb | Miltiadis Vasilakis | refreshMetadataObjectRequest = newRequest; |
201 | d8426ffb | Miltiadis Vasilakis | } |
202 | 5915687e | Miltiadis Vasilakis | } |
203 | d8426ffb | Miltiadis Vasilakis | [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous]; |
204 | d8426ffb | Miltiadis Vasilakis | } else { |
205 | d8426ffb | Miltiadis Vasilakis | if ([request isEqualTo:applyMetadataObjectRequest]) { |
206 | d8426ffb | Miltiadis Vasilakis | dispatch_async(dispatch_get_main_queue(), ^{ |
207 | d8426ffb | Miltiadis Vasilakis | [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataObjectRequest]; |
208 | d8426ffb | Miltiadis Vasilakis | }); |
209 | d8426ffb | Miltiadis Vasilakis | @synchronized(self) { |
210 | d8426ffb | Miltiadis Vasilakis | [applyMetadataObjectRequest release]; |
211 | d8426ffb | Miltiadis Vasilakis | applyMetadataObjectRequest = nil; |
212 | d8426ffb | Miltiadis Vasilakis | } |
213 | d8426ffb | Miltiadis Vasilakis | } else if ([request isEqualTo:refreshMetadataObjectRequest]) { |
214 | d8426ffb | Miltiadis Vasilakis | dispatch_async(dispatch_get_main_queue(), ^{ |
215 | d8426ffb | Miltiadis Vasilakis | [PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataObjectRequest]; |
216 | d8426ffb | Miltiadis Vasilakis | }); |
217 | d8426ffb | Miltiadis Vasilakis | @synchronized(self) { |
218 | d8426ffb | Miltiadis Vasilakis | [refreshMetadataObjectRequest release]; |
219 | d8426ffb | Miltiadis Vasilakis | refreshMetadataObjectRequest = nil; |
220 | d8426ffb | Miltiadis Vasilakis | } |
221 | 5915687e | Miltiadis Vasilakis | } |
222 | 5915687e | Miltiadis Vasilakis | } |
223 | 5f54c6be | Miltiadis Vasilakis | [pool drain]; |
224 | 5915687e | Miltiadis Vasilakis | } |
225 | 5915687e | Miltiadis Vasilakis | |
226 | 515cd8db | Miltiadis Vasilakis | #pragma mark - |
227 | 4ae10a2b | Miltiadis Vasilakis | #pragma mark Info |
228 | 4ae10a2b | Miltiadis Vasilakis | |
229 | 4ae10a2b | Miltiadis Vasilakis | - (void)applyInfo { |
230 | 4ae10a2b | Miltiadis Vasilakis | @synchronized(self) { |
231 | 4ae10a2b | Miltiadis Vasilakis | if (applyMetadataObjectRequest == nil) { |
232 | 4ae10a2b | Miltiadis Vasilakis | [[pithosNodeInfoController window] makeFirstResponder:nil]; |
233 | af3b9f06 | Miltiadis Vasilakis | if (sharingAccount) { |
234 | 919cb043 | Miltiadis Vasilakis | applyMetadataObjectRequest = [[ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos |
235 | 919cb043 | Miltiadis Vasilakis | containerName:pithosContainer.name |
236 | 919cb043 | Miltiadis Vasilakis | objectName:pithosObject.name |
237 | 919cb043 | Miltiadis Vasilakis | contentEncoding:nil |
238 | 919cb043 | Miltiadis Vasilakis | contentDisposition:nil |
239 | 919cb043 | Miltiadis Vasilakis | manifest:nil |
240 | 919cb043 | Miltiadis Vasilakis | sharing:nil |
241 | 919cb043 | Miltiadis Vasilakis | isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) |
242 | 919cb043 | Miltiadis Vasilakis | metadata:pithosObject.metadata |
243 | 919cb043 | Miltiadis Vasilakis | update:NO] retain]; |
244 | 919cb043 | Miltiadis Vasilakis | [applyMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos]; |
245 | af3b9f06 | Miltiadis Vasilakis | } else { |
246 | 919cb043 | Miltiadis Vasilakis | applyMetadataObjectRequest = [[ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos |
247 | 919cb043 | Miltiadis Vasilakis | containerName:pithosContainer.name |
248 | 919cb043 | Miltiadis Vasilakis | objectName:pithosObject.name |
249 | 919cb043 | Miltiadis Vasilakis | contentEncoding:pithosObject.contentEncoding |
250 | 919cb043 | Miltiadis Vasilakis | contentDisposition:pithosObject.contentDisposition |
251 | 919cb043 | Miltiadis Vasilakis | manifest:pithosObject.manifest |
252 | 919cb043 | Miltiadis Vasilakis | sharing:(pithosObject.sharing ? pithosObject.sharing : @"") |
253 | 919cb043 | Miltiadis Vasilakis | isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) |
254 | 919cb043 | Miltiadis Vasilakis | metadata:pithosObject.metadata |
255 | 919cb043 | Miltiadis Vasilakis | update:NO] retain]; |
256 | af3b9f06 | Miltiadis Vasilakis | } |
257 | 4ae10a2b | Miltiadis Vasilakis | applyMetadataObjectRequest.delegate = self; |
258 | 5f54c6be | Miltiadis Vasilakis | applyMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:); |
259 | 5f54c6be | Miltiadis Vasilakis | applyMetadataObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:); |
260 | 5f54c6be | Miltiadis Vasilakis | applyMetadataObjectRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: |
261 | 5f54c6be | Miltiadis Vasilakis | [NSNumber numberWithInteger:NSOperationQueuePriorityHigh], @"priority", |
262 | 5f54c6be | Miltiadis Vasilakis | [NSNumber numberWithUnsignedInteger:10], @"retries", |
263 | 5f54c6be | Miltiadis Vasilakis | NSStringFromSelector(@selector(objectRequestFinished:)), @"didFinishSelector", |
264 | 5f54c6be | Miltiadis Vasilakis | NSStringFromSelector(@selector(objectRequestFailed:)), @"didFailSelector", |
265 | 5f54c6be | Miltiadis Vasilakis | nil]; |
266 | 1b1e6fa1 | Miltiadis Vasilakis | [[PithosUtilities prepareRequest:applyMetadataObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous]; |
267 | 4ae10a2b | Miltiadis Vasilakis | } |
268 | 4ae10a2b | Miltiadis Vasilakis | } |
269 | 4ae10a2b | Miltiadis Vasilakis | } |
270 | 4ae10a2b | Miltiadis Vasilakis | |
271 | 4ae10a2b | Miltiadis Vasilakis | - (void)refreshInfo { |
272 | 4ae10a2b | Miltiadis Vasilakis | @synchronized(self) { |
273 | 4ae10a2b | Miltiadis Vasilakis | if (refreshMetadataObjectRequest == nil) { |
274 | 919cb043 | Miltiadis Vasilakis | refreshMetadataObjectRequest = [[ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos |
275 | 919cb043 | Miltiadis Vasilakis | containerName:pithosContainer.name |
276 | 919cb043 | Miltiadis Vasilakis | objectName:pithosObject.name] retain]; |
277 | af3b9f06 | Miltiadis Vasilakis | if (sharingAccount) |
278 | 919cb043 | Miltiadis Vasilakis | [refreshMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos]; |
279 | 4ae10a2b | Miltiadis Vasilakis | refreshMetadataObjectRequest.delegate = self; |
280 | 5f54c6be | Miltiadis Vasilakis | refreshMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:); |
281 | 5f54c6be | Miltiadis Vasilakis | refreshMetadataObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:); |
282 | 5f54c6be | Miltiadis Vasilakis | refreshMetadataObjectRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: |
283 | 5f54c6be | Miltiadis Vasilakis | [NSNumber numberWithInteger:NSOperationQueuePriorityHigh], @"priority", |
284 | 5f54c6be | Miltiadis Vasilakis | [NSNumber numberWithUnsignedInteger:10], @"retries", |
285 | 5f54c6be | Miltiadis Vasilakis | NSStringFromSelector(@selector(objectRequestFinished:)), @"didFinishSelector", |
286 | 5f54c6be | Miltiadis Vasilakis | NSStringFromSelector(@selector(objectRequestFailed:)), @"didFailSelector", |
287 | 5f54c6be | Miltiadis Vasilakis | nil]; |
288 | 4ae10a2b | Miltiadis Vasilakis | refreshMetadataObjectRequest.downloadCache = [ASIDownloadCache sharedCache]; |
289 | 1b1e6fa1 | Miltiadis Vasilakis | [[PithosUtilities prepareRequest:refreshMetadataObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous]; |
290 | 4ae10a2b | Miltiadis Vasilakis | } |
291 | 4ae10a2b | Miltiadis Vasilakis | } |
292 | 4ae10a2b | Miltiadis Vasilakis | } |
293 | 4ae10a2b | Miltiadis Vasilakis | |
294 | 4ae10a2b | Miltiadis Vasilakis | #pragma mark - |
295 | 515cd8db | Miltiadis Vasilakis | #pragma mark Actions |
296 | 515cd8db | Miltiadis Vasilakis | |
297 | 515cd8db | Miltiadis Vasilakis | - (void)showPithosNodeInfo:(id)sender { |
298 | 46b46b83 | Miltiadis Vasilakis | if (!pithosNodeInfoController) { |
299 | 515cd8db | Miltiadis Vasilakis | pithosNodeInfoController = [[PithosObjectNodeInfoController alloc] initWithPithosNode:self]; |
300 | 46b46b83 | Miltiadis Vasilakis | [self refreshInfo]; |
301 | 46b46b83 | Miltiadis Vasilakis | } |
302 | 515cd8db | Miltiadis Vasilakis | [pithosNodeInfoController showWindow:sender]; |
303 | 515cd8db | Miltiadis Vasilakis | [[pithosNodeInfoController window] makeKeyAndOrderFront:sender]; |
304 | 515cd8db | Miltiadis Vasilakis | [NSApp activateIgnoringOtherApps:YES]; |
305 | 515cd8db | Miltiadis Vasilakis | } |
306 | 515cd8db | Miltiadis Vasilakis | |
307 | d8d08dc1 | Miltiadis Vasilakis | @end |