예제 #1
0
        public IActionResult Put(string index, [FromBody] GargoyleEntity gargoyleEntity)
        {
            if (!gargoylesDatabase.Contains(index))
            {
                gargoyleEntity.Updated = DateTime.UtcNow;

                this.gargoylesDatabase.AddOrReplace(gargoyleEntity.ToModel());

                return(Json(gargoyleEntity));
            }

            if (!Request.Headers.TryGetValue("If-Match", out StringValues ifMatch))
            {
                return(StatusCode((int)HttpStatusCode.PreconditionFailed));
            }

            var model = this.gargoylesDatabase.Get(gargoyleEntity.Name);

            if (model.ETag() != ifMatch || ifMatch.Equals("*"))
            {
                return(StatusCode((int)HttpStatusCode.PreconditionFailed));
            }

            var updatedModel = this.gargoylesDatabase.Update(index, gargoyleEntity.ToModel());

            return(Json(new GargoyleEntity(updatedModel)));
        }
        public IActionResult Post([FromBody] GargoyleEntity gargoyleEntity)
        {
            // return a 4xx status code here if the gargoyle at that index already exists
            // there is a better status code to use than the generic 400-BadRequest.

            this.gargoylesDatabase.AddOrReplace(gargoyleEntity.ToModel());

            return(Json(gargoyleEntity));
        }
        public IActionResult Put(string index, [FromBody] GargoyleEntity gargoyleEntity)
        {
            // we aren't doing index checking for the lecture. don't forget it

            // add the ETag check if the gargoyle already exists.

            this.gargoylesDatabase.AddOrReplace(gargoyleEntity.ToModel());

            return(Json(gargoyleEntity));
        }
예제 #4
0
        public IActionResult Post([FromBody] GargoyleEntity gargoyleEntity)
        {
            if (this.gargoylesDatabase.Contains(gargoyleEntity.ToModel().Name))
            {
                return(StatusCode((int)HttpStatusCode.Conflict));
            }

            gargoyleEntity.Updated = DateTime.UtcNow;

            this.gargoylesDatabase.AddOrReplace(gargoyleEntity.ToModel());

            return(Json(gargoyleEntity));
        }
        public IActionResult Patch(string index, [FromBody] GargoyleEntity gargoyleEntity)
        {
            // check if model exists first

            if (!Request.Headers.TryGetValue("If-Match", out StringValues ifMatch))
            {
                return(StatusCode((int)HttpStatusCode.PreconditionFailed));
            }

            var model = this.gargoylesDatabase.Get(gargoyleEntity.Name);

            // add support for the wildcard if-match header here
            if (model.ETag() != ifMatch)
            {
                return(StatusCode((int)HttpStatusCode.PreconditionFailed));
            }

            var updatedModel = this.gargoylesDatabase.Update(index, gargoyleEntity.ToModel());

            return(Json(new GargoyleEntity(updatedModel)));
        }