internal AzureEntity GetEntity(string tableName, string partitionKey, string rowKey) { var request = GenerateRequest("GET", string.Format("{0}(PartitionKey='{1}',RowKey='{2}')", tableName, partitionKey, rowKey)); using (var response = (HttpWebResponse)request.GetResponse(false)) { var dataStream = response.GetResponseStream(); using (var reader = new StreamReader(dataStream)) { var doc = XDocument.Load(reader); switch (response.StatusCode) { case HttpStatusCode.OK: var entry = doc.Element(Namespaces.Atom + "entry"); return(AzureEntity.FromATOMFeed(entry)); case HttpStatusCode.NotFound: return(null); default: throw new StorageException(response.StatusCode, doc); } } } }
internal IEnumerable <AzureEntity> GetEntities(string tableName, string partitionKey, int maxRows) { var uri = string.Format("{0}()", tableName); var queryString = string.Empty; if (maxRows > 0) { queryString = string.Format("$top={0}", maxRows); } if (!partitionKey.IsNullOrEmpty()) { if (!queryString.IsNullOrEmpty()) { queryString += "&"; } queryString += BuildQueryExpression("PartitionKey", ComparisonOperators.Equal, partitionKey); } var request = GenerateRequest("GET", uri, queryString); using (var response = (HttpWebResponse)request.GetResponse(false)) { var dataStream = response.GetResponseStream(); if (response.StatusCode != HttpStatusCode.OK) { using (var reader = new StreamReader(dataStream)) { var doc = XDocument.Load(reader); throw new StorageException(response.StatusCode, doc); } } using (var reader = new StreamReader(dataStream)) { var doc = XDocument.Load(reader); foreach (var entry in doc.Element(Namespaces.Atom + "feed").Elements(Namespaces.Atom + "entry")) { var entity = AzureEntity.FromATOMFeed(entry); yield return(entity); } } } }