private static bool CheckModified(ResultExecutingContext context, IConditionalRequestMetadata metadata) { bool modified = true; HttpRequestConditions requestConditions = context.HttpContext.Request.GetRequestConditions(); if ((requestConditions.IfNoneMatch != null) && requestConditions.IfNoneMatch.Any()) { if (!String.IsNullOrWhiteSpace(metadata.EntityTag) && requestConditions.IfNoneMatch.Contains(metadata.EntityTag)) { modified = false; context.Result = new StatusCodeResult(StatusCodes.Status304NotModified); } } else if (requestConditions.IfModifiedSince.HasValue && metadata.LastModified.HasValue) { DateTimeOffset lastModified = metadata.LastModified.Value.AddTicks(-(metadata.LastModified.Value.Ticks % TimeSpan.TicksPerSecond)); if (lastModified <= requestConditions.IfModifiedSince.Value) { modified = false; context.Result = new StatusCodeResult(StatusCodes.Status304NotModified); } } return(modified); }
private UpdateRequest <T> CreateUpdateRequest <T>(string id, T update) { HttpRequestConditions requestConditions = Request.GetRequestConditions(); return(new UpdateRequest <T>(id, update, requestConditions.IfMatch, requestConditions.IfUnmodifiedSince)); }