Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
                    }
                }
            }
        }