#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