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) { 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 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)); }
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))); }