private static IEnumerable <Message> GetMessageFromResponse(Stream stream) { List <Message> result = null; Message msg; XmlDocument doc = new XmlDocument(); try { doc.Load(stream); } catch (XmlException xe) { throw new StorageServerException(StorageErrorCode.ServiceBadResponse, "The result of a get message opertation could not be parsed", default(HttpStatusCode), xe); } XmlNodeList messagesNodes = doc.SelectNodes(XPathQueryHelper.MessagesListQuery); if (messagesNodes.Count > 0) { result = new List <Message>(); } foreach (XmlNode messageNode in messagesNodes) { msg = new Message(); msg.Id = messageNode.SelectSingleNode(StorageHttpConstants.XmlElementNames.MessageId).FirstChild.Value.Trim(); Debug.Assert(msg.Id != null); if (messageNode.SelectSingleNode(StorageHttpConstants.XmlElementNames.PopReceipt) != null) { msg.PopReceipt = messageNode.SelectSingleNode(StorageHttpConstants.XmlElementNames.PopReceipt).FirstChild.Value.Trim(); Debug.Assert(msg.PopReceipt != null); } msg.InsertionTime = XPathQueryHelper.LoadSingleChildDateTimeValue(messageNode, StorageHttpConstants.XmlElementNames.InsertionTime, false).Value; msg.ExpirationTime = XPathQueryHelper.LoadSingleChildDateTimeValue(messageNode, StorageHttpConstants.XmlElementNames.ExpirationTime, false).Value; if (XPathQueryHelper.LoadSingleChildDateTimeValue(messageNode, StorageHttpConstants.XmlElementNames.TimeNextVisible, false) != null) { msg.TimeNextVisible = XPathQueryHelper.LoadSingleChildDateTimeValue(messageNode, StorageHttpConstants.XmlElementNames.TimeNextVisible, false).Value; } msg.SetContentFromBase64String(XPathQueryHelper.LoadSingleChildStringValue(messageNode, StorageHttpConstants.XmlElementNames.MessageText, false)); result.Add(msg); } return(result.AsEnumerable()); }
private static ListQueueResult GetQueuesFromResponse(Stream stream) { ListQueueResult result = null; List <string> names = new List <string>(); List <string> urls = new List <string>(); string nextMarker = null; XmlDocument doc = new XmlDocument(); try { doc.Load(stream); } catch (XmlException xe) { throw new StorageServerException(StorageErrorCode.ServiceBadResponse, "The result of a ListQueue operation could not be parsed", default(HttpStatusCode), xe); } // get queue names and urls XmlNodeList queueNameNodes = doc.SelectNodes(XPathQueryHelper.QueueListQuery); foreach (XmlNode queueNameNode in queueNameNodes) { string queueName = XPathQueryHelper.LoadSingleChildStringValue(queueNameNode, StorageHttpConstants.XmlElementNames.QueueName, true); names.Add(queueName); string url = XPathQueryHelper.LoadSingleChildStringValue(queueNameNode, StorageHttpConstants.XmlElementNames.Url, true); urls.Add(url); } // Get the nextMarker XmlNode nextMarkerNode = doc.SelectSingleNode(XPathQueryHelper.NextMarkerQuery); if (nextMarkerNode != null && nextMarkerNode.FirstChild != null) { nextMarker = nextMarkerNode.FirstChild.Value; } if (names.Count > 0) { Debug.Assert(names.Count == urls.Count); result = new ListQueueResult(names, urls, nextMarker); } return(result); }