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