-Subproject commit 8fb25a1bf3c5e88def03d59bbae18dfbbc967567
+Subproject commit 2f6bc433e2b453f5f9e56d07115497809416eb13
authToken:authToken
authUser:authUser
ignoreSSLErrors:ignoreSSLErrors
- resetNodes:NO];
+ resetNodes:YES];
}
}
});
NSUInteger retries = [[accountRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
- ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:accountRequest];
+ ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities retryWithUpdatedURLRequest:accountRequest
+ andPithosAccountManager:pithosAccountManager];
[(NSMutableDictionary *)(newAccountRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
+
self.accountRequest = newAccountRequest;
[[PithosUtilities prepareRequest:accountRequest priority:[[accountRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
} else {
@autoreleasepool {
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
- ASIPithosAccountRequest *newRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:request];
+ ASIPithosAccountRequest *newRequest = (ASIPithosAccountRequest *)[PithosUtilities retryWithUpdatedURLRequest:request
+ andPithosAccountManager:pithosAccountManager];;
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
if ([request isEqualTo:applyMetadataAccountRequest]) {
@synchronized(self) {
}
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
- ASIPithosRequest *newRequest = (ASIPithosRequest *)[PithosUtilities copyRequest:request];
+ ASIPithosRequest *newRequest = (ASIPithosRequest *)[PithosUtilities retryWithUpdatedURLRequest:request
+ andPithosAccountManager:pithosAccountManager];;
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithBool:NO] forKey:@"unexpectedResponseStatus"];
[[newRequest.userInfo objectForKey:@"networkQueue"] addOperation:[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]]];
});
NSUInteger retries = [[containerRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
- ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:containerRequest];
+ ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities retryWithUpdatedURLRequest:containerRequest
+ andPithosAccountManager:pithosAccountManager];
[(NSMutableDictionary *)(newContainerRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
self.containerRequest = newContainerRequest;
[[PithosUtilities prepareRequest:containerRequest priority:[[containerRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
@autoreleasepool {
NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
- ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:request];
+ ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[PithosUtilities retryWithUpdatedURLRequest:request
+ andPithosAccountManager:pithosAccountManager];
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
if ([request isEqualTo:applyMetadataContainerRequest]) {
@synchronized(self) {
@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) {
});
NSUInteger retries = [[sharingAccountsRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
- ASIPithosRequest *newSharingAccountsRequest = (ASIPithosRequest *)[PithosUtilities copyRequest:sharingAccountsRequest];
+ ASIPithosRequest *newSharingAccountsRequest = (ASIPithosRequest *)[PithosUtilities retryWithUpdatedURLRequest:sharingAccountsRequest
+ andPithosAccountManager:pithosAccountManager];;
[(NSMutableDictionary *)(newSharingAccountsRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
self.sharingAccountsRequest = newSharingAccountsRequest;
[[PithosUtilities prepareRequest:sharingAccountsRequest priority:[[sharingAccountsRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
@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) {
@class ASIPithosContainerRequest;
@class ASIPithosObjectRequest;
@class ASIPithosObject;
+@class PithosAccount;
@interface PithosUtilities : NSObject
+ (ASIPithosRequest *)prepareRequest:(ASIPithosRequest *)request;
+ (ASIPithosRequest *)copyRequest:(ASIPithosRequest *)request;
+ (void)startAndWaitForRequest:(ASIPithosRequest *)request;
++ (ASIPithosRequest *)retryWithUpdatedURLRequest:(ASIPithosRequest *)request andPithosAccountManager:(PithosAccount *)pithosAccountManager;
@end
#import "ASIPithosContainerRequest.h"
#import "ASIPithosObjectRequest.h"
#import "ASIPithosObject.h"
+#import "PithosAccount.h"
#import "HashMapHash.h"
@implementation PithosUtilities
[networkQueue addOperations:[NSArray arrayWithObject:[self prepareRequest:request]] waitUntilFinished:YES];
}
++ (ASIPithosRequest *)retryWithUpdatedURLRequest:(ASIPithosRequest *)request andPithosAccountManager:(PithosAccount *)pithosAccountManager {
+ ASIPithosRequest *newRequest = [PithosUtilities copyRequest:request];
+ if (((request.responseStatusCode == 401) || (request.responseStatusCode == 404) || (request.responseStatusCode == 0)) &&
+ request.retryBaseURLString) {
+ ASIPithosRequest *serviceCatalogRequest = [ASIPithosRequest serviceCatalogRequestWithPithos:pithosAccountManager.pithos];
+ [PithosUtilities startAndWaitForRequest:serviceCatalogRequest];
+ [pithosAccountManager updateServicesFromServiceCatalogRequest:serviceCatalogRequest];
+
+ if (newRequest.retryType == ASIPithosRequestTypeStorage) {
+ NSString *URLPrefix = pithosAccountManager.pithos.storageURLPrefix;
+ NSString *URLSuffix = [[newRequest.url description] substringFromIndex:[newRequest.retryBaseURLString length]];
+ newRequest.url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", URLPrefix, URLSuffix]];
+ } else if (newRequest.retryType == ASIPithosRequestTypeUserCatalog) {
+ NSString *URLPrefix = pithosAccountManager.pithos.userCatalogURL;
+ NSString *URLSuffix = [[newRequest.url description] substringFromIndex:[newRequest.retryBaseURLString length]];
+ newRequest.url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", URLPrefix, URLSuffix]];
+ }
+ }
+
+ return newRequest;
+}
+
@end