/// <summary> /// Lists the queues within the account. /// </summary> /// <returns>A list of queues</returns> private ListQueueResult ListQueuesImpl(string prefix, string marker, int maxResult) { ListQueueResult result = null; RetryPolicy(() => { NameValueCollection col = new NameValueCollection(); col.Add(StorageHttpConstants.QueryParams.QueryParamComp, StorageHttpConstants.CompConstants.List); if (!string.IsNullOrEmpty(prefix)) { col.Add(StorageHttpConstants.QueryParams.QueryParamPrefix, prefix); } if (!string.IsNullOrEmpty(marker)) { col.Add(StorageHttpConstants.QueryParams.QueryParamMarker, marker); } col.Add(StorageHttpConstants.QueryParams.QueryParamMaxResults, maxResult.ToString(CultureInfo.InvariantCulture)); ResourceUriComponents uriComponents; Uri uri = Utilities.CreateRequestUri( AccountInfo.BaseUri, AccountInfo.UsePathStyleUris, AccountInfo.AccountName, null, null, Timeout, col, out uriComponents ); HttpWebRequest request = Utilities.CreateHttpRequest(uri, StorageHttpConstants.HttpMethod.Get, Timeout); _credentials.SignRequest(request, uriComponents); try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.OK) { using (Stream stream = response.GetResponseStream()) { result = GetQueuesFromResponse(stream); stream.Close(); } } else { Utilities.ProcessUnexpectedStatusCode(response); } response.Close(); } } catch (WebException we) { throw Utilities.TranslateWebException(we); } }); return(result); }
public override bool CreateQueue(out bool queueAlreadyExists) { bool result = false; queueAlreadyExists = false; // cannot use ref or out parameters in the retry expression below bool exists = false; RetryPolicy(() => { ResourceUriComponents uriComponents; Uri uri = CreateRequestUri(null, new NameValueCollection(), false, out uriComponents); HttpWebRequest request = CreateHttpRequest(uri, StorageHttpConstants.HttpMethod.Put); _credentials.SignRequest(request, uriComponents); try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.StatusCode == HttpStatusCode.Created) { // as an addition we could parse the result and retrieve // queue properties at this point exists = false; result = true; } else if (response.StatusCode == HttpStatusCode.NoContent) { exists = true; } else { Utilities.ProcessUnexpectedStatusCode(response); } response.Close(); } } catch (WebException we) { if (we.Response != null && ((HttpWebResponse)we.Response).StatusCode == HttpStatusCode.Conflict) { exists = true; } else { throw Utilities.TranslateWebException(we); } } }); queueAlreadyExists = exists; return(result); }