/// <summary> /// Add a strong ETag if <paramref name="savedData"/> supports it /// </summary> /// <param name="savedData">The data to add the ETag for</param> /// <exception cref="ArgumentNullException"><paramref name="savedData"/> is <see langword="null"/></exception> public bool TryAddStrongETagForModel(object savedData) { if (!ETagService.TryGetStrongETag(savedData, out var eTag)) { return(false); } AddETag(eTag); return(true); }
/// <summary> /// Add a weak ETag for <paramref name="savedData"/> /// </summary> /// <param name="savedData">The data to add the ETag for</param> /// <exception cref="ArgumentNullException"><paramref name="savedData"/> is <see langword="null"/></exception> public void AddWeakETagForModel(object savedData) { if (savedData is null) { throw new ArgumentNullException(nameof(savedData)); } var eTag = ETagService.GetWeakETag(savedData); AddETag(eTag); }
/// <summary> /// Get whether a data model should be updated /// </summary> /// <param name="savedData">The data model to check</param> /// <returns>Whether the data model should be updated</returns> /// <exception cref="ArgumentNullException"><paramref name="savedData"/> is <see langword="null"/></exception> public bool ShouldUpdate(object savedData) { if (!RequestHeaders.TryGetValue(IfMatchKey, out Microsoft.Extensions.Primitives.StringValues eTags) || eTags.Count == 0) { // ETags not in use return(true); } ETagMatchResult result = ETagService.CheckETags(eTags[0], savedData); return (result == ETagMatchResult.ETagNotInRequest || (result & ETagMatchResult.Match) != 0); }