private static async Task<SimpleHttpResponse> DoForContainersAsync(string container, HttpStatusCode successStatus, Func<CloudBlobContainer, Task> action, IEnumerable<CloudStorageAccount> accounts, bool ignoreNotFound, IEnumerable<CloudStorageAccount> excludeAccounts) { SimpleHttpResponse retval = new SimpleHttpResponse { StatusCode = successStatus, }; if (excludeAccounts != null) { accounts = accounts.Except(excludeAccounts); } var actionTasks = accounts .Select(account => action(NamespaceHandler.GetContainerByName(account, container))); try { await Task.WhenAll(actionTasks.ToArray()); } catch (AggregateException aggEx) { aggEx.Handle(ex => ProcessException(ex, ignoreNotFound, retval)); } catch (Exception ex) { if (!ProcessException(ex, ignoreNotFound, retval)) { throw; } } return retval; }
public SimpleHttpResponse(SimpleHttpResponse src) { this.StatusCode = src.StatusCode; this.ReasonPhrase = src.ReasonPhrase; }
public DelegatedResponse(SimpleHttpResponse src) : base(src) { }
public SimpleHttpResponse(SimpleHttpResponse src) { this.StatusCode = src.StatusCode; this.ReasonPhrase = src.ReasonPhrase; }
private static bool ProcessException(Exception ex, bool ignoreNotFound, SimpleHttpResponse response) { if (ex is StorageException) { var storeEx = (StorageException)ex; if (!ignoreNotFound || storeEx.RequestInformation.HttpStatusCode != (int)HttpStatusCode.NotFound) { response.StatusCode = (HttpStatusCode)storeEx.RequestInformation.HttpStatusCode; response.ReasonPhrase = storeEx.RequestInformation.HttpStatusMessage; } return true; } return false; }