コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
                }
            }
        }