public void InnerListContainers(string prefix, Action<CloudOperationResponse<IEnumerable<ICloudBlobContainer>>> callback) { var serviceOperation = string.Concat(this.storageAccountEndpoint, "?comp=list&timeout=90"); if (!string.IsNullOrWhiteSpace(prefix)) { serviceOperation = string.Concat(serviceOperation, "&prefix=", prefix.Replace(@"\", "/")); } // Adding an incremental seed to avoid a cached response. serviceOperation = string.Concat(serviceOperation, "&incrementalSeed=", DateTime.UtcNow.Ticks); var request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(serviceOperation)); request.Headers["x-ms-version"] = "2009-09-19"; request.Method = "GET"; this.Credentials.SignRequest(request, -1); request.BeginGetResponse( ar => { try { var response = (HttpWebResponse)request.EndGetResponse(ar); var serializer = new StorageAccountBlobDataContractSerializer(); var results = serializer.ReadContainerObjects(response.GetResponseStream()); callback(new CloudOperationResponse<IEnumerable<ICloudBlobContainer>>((results != null) ? results : null, null)); } catch (Exception exception) { callback(new CloudOperationResponse<IEnumerable<ICloudBlobContainer>>(null, StorageClientExceptionParser.ParseXmlWebException(exception as WebException) ?? exception)); } }, null); }
private void InnerListBlobsWithPrefixUsingStorageKey(string blobPrefix, bool useFlatBlobListing, Action<CloudOperationResponse<System.Collections.Generic.IEnumerable<ICloudBlob>>> callback) { var serviceOperation = string.Concat(this.Uri, "?restype=container&comp=list&timeout=90"); if (!useFlatBlobListing) { serviceOperation = string.Concat(serviceOperation, "&delimiter=/"); } if (!string.IsNullOrWhiteSpace(blobPrefix)) { serviceOperation = string.Concat(serviceOperation, "&prefix=", blobPrefix.Replace(@"\", "/")); } // Adding an incremental seed to avoid a cached response. serviceOperation = string.Concat(serviceOperation, "&incrementalSeed=", DateTime.UtcNow.Ticks); var request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(serviceOperation)); request.Headers["x-ms-version"] = "2009-09-19"; request.Method = "GET"; this.Credentials.SignRequest(request, -1); request.BeginGetResponse( ar => { try { var response = (HttpWebResponse)request.EndGetResponse(ar); var serializer = new StorageAccountBlobDataContractSerializer(); var results = serializer.ReadObject(response.GetResponseStream()); callback(new CloudOperationResponse<System.Collections.Generic.IEnumerable<ICloudBlob>>((results != null) ? results : new ICloudBlob[0], null)); } catch (Exception exception) { callback(new CloudOperationResponse<System.Collections.Generic.IEnumerable<ICloudBlob>>(null, StorageClientExceptionParser.ParseXmlWebException(exception as WebException) ?? exception)); } }, null); }