public ResponseWithHeaders <IReadOnlyList <QueueSignedIdentifier>, QueueGetAccessPolicyHeaders> GetAccessPolicy(int?timeout = null, CancellationToken cancellationToken = default) { using var message = CreateGetAccessPolicyRequest(timeout); _pipeline.Send(message, cancellationToken); var headers = new QueueGetAccessPolicyHeaders(message.Response); switch (message.Response.Status) { case 200: { IReadOnlyList <QueueSignedIdentifier> value = default; var document = XDocument.Load(message.Response.ContentStream, LoadOptions.PreserveWhitespace); if (document.Element("SignedIdentifiers") is XElement signedIdentifiersElement) { var array = new List <QueueSignedIdentifier>(); foreach (var e in signedIdentifiersElement.Elements("SignedIdentifier")) { array.Add(QueueSignedIdentifier.DeserializeQueueSignedIdentifier(e)); } value = array; } return(ResponseWithHeaders.FromValue(value, headers, message.Response)); } default: throw _clientDiagnostics.CreateRequestFailedException(message.Response); } }
public async Task ParseResponseBodyAsync(System.IO.Stream responseStream) { using (StreamReader sr = new StreamReader(responseStream)) { var content = await sr.ReadToEndAsync(); if (content.Length > 0) { var xDoc = XDocument.Parse(content); var signedIdentifiers = new List <QueueSignedIdentifier>(); foreach (var identifierResponse in xDoc.Root.Elements().Where(e => e.Name.LocalName.Equals("SignedIdentifier"))) { var identifier = new QueueSignedIdentifier(); identifier.AccessPolicy = new QueueAccessPolicy(); foreach (var element in identifierResponse.Elements()) { switch (element.Name.LocalName) { case "Id": identifier.Id = element.Value; break; case "AccessPolicy": foreach (var apElement in element.Elements()) { switch (apElement.Name.LocalName) { case "Permission": identifier.AccessPolicy.Permission = SharedAccessPermissionParse.ParseQueue(apElement.Value); break; case "Start": identifier.AccessPolicy.StartTime = Parsers.ParseUTCDate(apElement.Value); break; case "Expiry": identifier.AccessPolicy.Expiry = Parsers.ParseUTCDate(apElement.Value); break; } } break; } } signedIdentifiers.Add(identifier); } SignedIdentifiers = new ReadOnlyCollection <QueueSignedIdentifier>(signedIdentifiers); } } }