Exemplo n.º 1
0
        internal void InsertEntity(string tableName, AzureEntity entity)
        {
            Validate
            .Begin()
            .IsNotNull(entity)
            .Check();

            var entry = entity.AsATOMEntry();

            var request = GenerateRequest("POST", tableName, null, entry);

            using (var response = (HttpWebResponse)request.GetResponse(false))
            {
                switch (response.StatusCode)
                {
                case HttpStatusCode.Created:     // SUCCESS
                    return;

                case HttpStatusCode.Conflict:     // already exists
                    throw new EntityAlreadyExistsException();

                default:
                    var dataStream = response.GetResponseStream();
                    using (var reader = new StreamReader(dataStream))
                    {
                        var doc = XDocument.Load(reader);
                        throw new StorageException(response.StatusCode, doc);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void InsertOrReplaceEntity(string tableName, AzureEntity entity, bool setIfMatchHeader)
        {
            Validate
            .Begin()
            .ParameterIsNotNull(tableName, "tableName")
            .ParameterIsNotNull(entity, "entity")
            .Check();

            var entry = entity.AsATOMEntry();

            var request = GenerateRequest(
                "PUT",
                string.Format("{0}(PartitionKey='{1}',RowKey='{2}')", tableName, entity.PartitionKey, entity.RowKey),
                null,
                entry);

            if (setIfMatchHeader)
            {
                request.Headers.Add("If-Match", "*");
            }

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                switch (response.StatusCode)
                {
                case HttpStatusCode.NoContent:     // SUCCESS
                    return;

                default:
                    var dataStream = response.GetResponseStream();
                    using (var reader = new StreamReader(dataStream))
                    {
                        var doc = XDocument.Load(reader);
                        throw new StorageException(response.StatusCode, doc);
                    }
                }
            }
        }