Revision 6d9d5dce
b/pithos-apple-common | ||
---|---|---|
1 |
Subproject commit 8fb25a1bf3c5e88def03d59bbae18dfbbc967567 |
|
1 |
Subproject commit 2f6bc433e2b453f5f9e56d07115497809416eb13 |
b/pithos-macos/PithosAccount.m | ||
---|---|---|
488 | 488 |
authToken:authToken |
489 | 489 |
authUser:authUser |
490 | 490 |
ignoreSSLErrors:ignoreSSLErrors |
491 |
resetNodes:NO];
|
|
491 |
resetNodes:YES];
|
|
492 | 492 |
} |
493 | 493 |
} |
494 | 494 |
|
b/pithos-macos/PithosAccountNode.m | ||
---|---|---|
209 | 209 |
}); |
210 | 210 |
NSUInteger retries = [[accountRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
211 | 211 |
if (retries > 0) { |
212 |
ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:accountRequest]; |
|
212 |
ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities retryWithUpdatedURLRequest:accountRequest |
|
213 |
andPithosAccountManager:pithosAccountManager]; |
|
213 | 214 |
[(NSMutableDictionary *)(newAccountRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
215 |
|
|
214 | 216 |
self.accountRequest = newAccountRequest; |
215 | 217 |
[[PithosUtilities prepareRequest:accountRequest priority:[[accountRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous]; |
216 | 218 |
} else { |
... | ... | |
337 | 339 |
@autoreleasepool { |
338 | 340 |
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
339 | 341 |
if (retries > 0) { |
340 |
ASIPithosAccountRequest *newRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:request]; |
|
342 |
ASIPithosAccountRequest *newRequest = (ASIPithosAccountRequest *)[PithosUtilities retryWithUpdatedURLRequest:request |
|
343 |
andPithosAccountManager:pithosAccountManager];; |
|
341 | 344 |
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
342 | 345 |
if ([request isEqualTo:applyMetadataAccountRequest]) { |
343 | 346 |
@synchronized(self) { |
b/pithos-macos/PithosBrowserController.m | ||
---|---|---|
1632 | 1632 |
} |
1633 | 1633 |
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
1634 | 1634 |
if (retries > 0) { |
1635 |
ASIPithosRequest *newRequest = (ASIPithosRequest *)[PithosUtilities copyRequest:request]; |
|
1635 |
ASIPithosRequest *newRequest = (ASIPithosRequest *)[PithosUtilities retryWithUpdatedURLRequest:request |
|
1636 |
andPithosAccountManager:pithosAccountManager];; |
|
1636 | 1637 |
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
1637 | 1638 |
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithBool:NO] forKey:@"unexpectedResponseStatus"]; |
1638 | 1639 |
[[newRequest.userInfo objectForKey:@"networkQueue"] addOperation:[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]]]; |
b/pithos-macos/PithosContainerNode.m | ||
---|---|---|
210 | 210 |
}); |
211 | 211 |
NSUInteger retries = [[containerRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
212 | 212 |
if (retries > 0) { |
213 |
ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:containerRequest]; |
|
213 |
ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities retryWithUpdatedURLRequest:containerRequest |
|
214 |
andPithosAccountManager:pithosAccountManager]; |
|
214 | 215 |
[(NSMutableDictionary *)(newContainerRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
215 | 216 |
self.containerRequest = newContainerRequest; |
216 | 217 |
[[PithosUtilities prepareRequest:containerRequest priority:[[containerRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous]; |
... | ... | |
404 | 405 |
@autoreleasepool { |
405 | 406 |
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
406 | 407 |
if (retries > 0) { |
407 |
ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:request]; |
|
408 |
ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[PithosUtilities retryWithUpdatedURLRequest:request |
|
409 |
andPithosAccountManager:pithosAccountManager]; |
|
408 | 410 |
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
409 | 411 |
if ([request isEqualTo:applyMetadataContainerRequest]) { |
410 | 412 |
@synchronized(self) { |
b/pithos-macos/PithosObjectNode.m | ||
---|---|---|
224 | 224 |
@autoreleasepool { |
225 | 225 |
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
226 | 226 |
if (retries > 0) { |
227 |
ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities copyRequest:request]; |
|
227 |
ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities retryWithUpdatedURLRequest:request |
|
228 |
andPithosAccountManager:pithosAccountManager]; |
|
228 | 229 |
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
229 | 230 |
if ([request isEqualTo:applyMetadataObjectRequest]) { |
230 | 231 |
@synchronized(self) { |
b/pithos-macos/PithosSharingAccountsNode.m | ||
---|---|---|
143 | 143 |
}); |
144 | 144 |
NSUInteger retries = [[sharingAccountsRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
145 | 145 |
if (retries > 0) { |
146 |
ASIPithosRequest *newSharingAccountsRequest = (ASIPithosRequest *)[PithosUtilities copyRequest:sharingAccountsRequest]; |
|
146 |
ASIPithosRequest *newSharingAccountsRequest = (ASIPithosRequest *)[PithosUtilities retryWithUpdatedURLRequest:sharingAccountsRequest |
|
147 |
andPithosAccountManager:pithosAccountManager];; |
|
147 | 148 |
[(NSMutableDictionary *)(newSharingAccountsRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
148 | 149 |
self.sharingAccountsRequest = newSharingAccountsRequest; |
149 | 150 |
[[PithosUtilities prepareRequest:sharingAccountsRequest priority:[[sharingAccountsRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous]; |
b/pithos-macos/PithosSubdirNode.m | ||
---|---|---|
241 | 241 |
@autoreleasepool { |
242 | 242 |
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue]; |
243 | 243 |
if (retries > 0) { |
244 |
ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities copyRequest:request]; |
|
244 |
ASIPithosObjectRequest *newRequest = (ASIPithosObjectRequest *)[PithosUtilities retryWithUpdatedURLRequest:request |
|
245 |
andPithosAccountManager:pithosAccountManager]; |
|
245 | 246 |
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"]; |
246 | 247 |
if ([request isEqualTo:applyMetadataObjectRequest]) { |
247 | 248 |
@synchronized(self) { |
b/pithos-macos/PithosUtilities.h | ||
---|---|---|
40 | 40 |
@class ASIPithosContainerRequest; |
41 | 41 |
@class ASIPithosObjectRequest; |
42 | 42 |
@class ASIPithosObject; |
43 |
@class PithosAccount; |
|
43 | 44 |
|
44 | 45 |
@interface PithosUtilities : NSObject |
45 | 46 |
|
... | ... | |
164 | 165 |
+ (ASIPithosRequest *)prepareRequest:(ASIPithosRequest *)request; |
165 | 166 |
+ (ASIPithosRequest *)copyRequest:(ASIPithosRequest *)request; |
166 | 167 |
+ (void)startAndWaitForRequest:(ASIPithosRequest *)request; |
168 |
+ (ASIPithosRequest *)retryWithUpdatedURLRequest:(ASIPithosRequest *)request andPithosAccountManager:(PithosAccount *)pithosAccountManager; |
|
167 | 169 |
|
168 | 170 |
@end |
b/pithos-macos/PithosUtilities.m | ||
---|---|---|
41 | 41 |
#import "ASIPithosContainerRequest.h" |
42 | 42 |
#import "ASIPithosObjectRequest.h" |
43 | 43 |
#import "ASIPithosObject.h" |
44 |
#import "PithosAccount.h" |
|
44 | 45 |
#import "HashMapHash.h" |
45 | 46 |
|
46 | 47 |
@implementation PithosUtilities |
... | ... | |
1305 | 1306 |
[networkQueue addOperations:[NSArray arrayWithObject:[self prepareRequest:request]] waitUntilFinished:YES]; |
1306 | 1307 |
} |
1307 | 1308 |
|
1309 |
+ (ASIPithosRequest *)retryWithUpdatedURLRequest:(ASIPithosRequest *)request andPithosAccountManager:(PithosAccount *)pithosAccountManager { |
|
1310 |
ASIPithosRequest *newRequest = [PithosUtilities copyRequest:request]; |
|
1311 |
if (((request.responseStatusCode == 401) || (request.responseStatusCode == 404) || (request.responseStatusCode == 0)) && |
|
1312 |
request.retryBaseURLString) { |
|
1313 |
ASIPithosRequest *serviceCatalogRequest = [ASIPithosRequest serviceCatalogRequestWithPithos:pithosAccountManager.pithos]; |
|
1314 |
[PithosUtilities startAndWaitForRequest:serviceCatalogRequest]; |
|
1315 |
[pithosAccountManager updateServicesFromServiceCatalogRequest:serviceCatalogRequest]; |
|
1316 |
|
|
1317 |
if (newRequest.retryType == ASIPithosRequestTypeStorage) { |
|
1318 |
NSString *URLPrefix = pithosAccountManager.pithos.storageURLPrefix; |
|
1319 |
NSString *URLSuffix = [[newRequest.url description] substringFromIndex:[newRequest.retryBaseURLString length]]; |
|
1320 |
newRequest.url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", URLPrefix, URLSuffix]]; |
|
1321 |
} else if (newRequest.retryType == ASIPithosRequestTypeUserCatalog) { |
|
1322 |
NSString *URLPrefix = pithosAccountManager.pithos.userCatalogURL; |
|
1323 |
NSString *URLSuffix = [[newRequest.url description] substringFromIndex:[newRequest.retryBaseURLString length]]; |
|
1324 |
newRequest.url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", URLPrefix, URLSuffix]]; |
|
1325 |
} |
|
1326 |
} |
|
1327 |
|
|
1328 |
return newRequest; |
|
1329 |
} |
|
1330 |
|
|
1308 | 1331 |
@end |
Also available in: Unified diff