Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }