From 3a484ccd3b9fcfb36746a637bd4adc33465f27d0 Mon Sep 17 00:00:00 2001
From: Kahbazi <akahbazi@gmail.com>
Date: Thu, 12 Aug 2021 00:15:31 +0430
Subject: [PATCH] Use strongly typed headers (#35270)

---
 .../ResponseCaching/src/ResponseCachingMiddleware.cs   |  8 ++++----
 .../src/ResponseCachingPolicyProvider.cs               |  4 ++--
 .../src/Filters/ResponseCacheFilterExecutor.cs         | 10 +++++-----
 src/Servers/IIS/IIS/src/Core/IISHttpContext.cs         |  2 +-
 .../ChunkingCookieManager/ChunkingCookieManager.cs     |  4 ++--
 5 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/Middleware/ResponseCaching/src/ResponseCachingMiddleware.cs b/src/Middleware/ResponseCaching/src/ResponseCachingMiddleware.cs
index 0961b148c56..b1268642d39 100644
--- a/src/Middleware/ResponseCaching/src/ResponseCachingMiddleware.cs
+++ b/src/Middleware/ResponseCaching/src/ResponseCachingMiddleware.cs
@@ -461,8 +461,8 @@ namespace Microsoft.AspNetCore.ResponseCaching
                 }
 
                 EntityTagHeaderValue eTag;
-                if (!StringValues.IsNullOrEmpty(cachedResponseHeaders[HeaderNames.ETag])
-                    && EntityTagHeaderValue.TryParse(cachedResponseHeaders[HeaderNames.ETag].ToString(), out eTag)
+                if (!StringValues.IsNullOrEmpty(cachedResponseHeaders.ETag)
+                    && EntityTagHeaderValue.TryParse(cachedResponseHeaders.ETag.ToString(), out eTag)
                     && EntityTagHeaderValue.TryParseList(ifNoneMatchHeader, out var ifNoneMatchEtags))
                 {
                     for (var i = 0; i < ifNoneMatchEtags.Count; i++)
@@ -482,8 +482,8 @@ namespace Microsoft.AspNetCore.ResponseCaching
                 if (!StringValues.IsNullOrEmpty(ifModifiedSince))
                 {
                     DateTimeOffset modified;
-                    if (!HeaderUtilities.TryParseDate(cachedResponseHeaders[HeaderNames.LastModified].ToString(), out modified) &&
-                        !HeaderUtilities.TryParseDate(cachedResponseHeaders[HeaderNames.Date].ToString(), out modified))
+                    if (!HeaderUtilities.TryParseDate(cachedResponseHeaders.LastModified.ToString(), out modified) &&
+                        !HeaderUtilities.TryParseDate(cachedResponseHeaders.Date.ToString(), out modified))
                     {
                         return false;
                     }
diff --git a/src/Middleware/ResponseCaching/src/ResponseCachingPolicyProvider.cs b/src/Middleware/ResponseCaching/src/ResponseCachingPolicyProvider.cs
index a658b576165..42ce2e695e7 100644
--- a/src/Middleware/ResponseCaching/src/ResponseCachingPolicyProvider.cs
+++ b/src/Middleware/ResponseCaching/src/ResponseCachingPolicyProvider.cs
@@ -167,7 +167,7 @@ namespace Microsoft.AspNetCore.ResponseCaching
         public virtual bool IsCachedEntryFresh(ResponseCachingContext context)
         {
             var age = context.CachedEntryAge!.Value;
-            var cachedCacheControlHeaders = context.CachedResponseHeaders[HeaderNames.CacheControl];
+            var cachedCacheControlHeaders = context.CachedResponseHeaders.CacheControl;
             var requestCacheControlHeaders = context.HttpContext.Request.Headers.CacheControl;
 
             // Add min-fresh requirements
@@ -232,7 +232,7 @@ namespace Microsoft.AspNetCore.ResponseCaching
                 {
                     // Validate expiration
                     DateTimeOffset expires;
-                    if (HeaderUtilities.TryParseDate(context.CachedResponseHeaders[HeaderNames.Expires].ToString(), out expires) &&
+                    if (HeaderUtilities.TryParseDate(context.CachedResponseHeaders.Expires.ToString(), out expires) &&
                         context.ResponseTime!.Value >= expires)
                     {
                         context.Logger.ExpirationExpiresExceeded(context.ResponseTime.Value, expires);
diff --git a/src/Mvc/Mvc.Core/src/Filters/ResponseCacheFilterExecutor.cs b/src/Mvc/Mvc.Core/src/Filters/ResponseCacheFilterExecutor.cs
index 367cc75cf7d..2e390e68fcb 100644
--- a/src/Mvc/Mvc.Core/src/Filters/ResponseCacheFilterExecutor.cs
+++ b/src/Mvc/Mvc.Core/src/Filters/ResponseCacheFilterExecutor.cs
@@ -79,7 +79,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters
 
             if (!string.IsNullOrEmpty(VaryByHeader))
             {
-                headers[HeaderNames.Vary] = VaryByHeader;
+                headers.Vary = VaryByHeader;
             }
 
             if (VaryByQueryKeys != null)
@@ -95,13 +95,13 @@ namespace Microsoft.AspNetCore.Mvc.Filters
 
             if (NoStore)
             {
-                headers[HeaderNames.CacheControl] = "no-store";
+                headers.CacheControl = "no-store";
 
                 // Cache-control: no-store, no-cache is valid.
                 if (Location == ResponseCacheLocation.None)
                 {
                     headers.AppendCommaSeparatedValues(HeaderNames.CacheControl, "no-cache");
-                    headers[HeaderNames.Pragma] = "no-cache";
+                    headers.Pragma = "no-cache";
                 }
             }
             else
@@ -117,7 +117,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters
                         break;
                     case ResponseCacheLocation.None:
                         cacheControlValue = "no-cache,";
-                        headers[HeaderNames.Pragma] = "no-cache";
+                        headers.Pragma = "no-cache";
                         break;
                     default:
                         cacheControlValue = null;
@@ -125,7 +125,7 @@ namespace Microsoft.AspNetCore.Mvc.Filters
                 }
 
                 cacheControlValue = $"{cacheControlValue}max-age={Duration}";
-                headers[HeaderNames.CacheControl] = cacheControlValue;
+                headers.CacheControl = cacheControlValue;
             }
         }
     }
diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs b/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs
index ff84132da50..8405bbbbede 100644
--- a/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs
+++ b/src/Servers/IIS/IIS/src/Core/IISHttpContext.cs
@@ -264,7 +264,7 @@ namespace Microsoft.AspNetCore.Server.IIS.Core
             // Http/1.x requests with bodies require either a Content-Length or Transfer-Encoding header.
             // Note Http.Sys adds the Transfer-Encoding: chunked header to HTTP/2 requests with bodies for back compat.
             // Transfer-Encoding takes priority over Content-Length.
-            string transferEncoding = RequestHeaders[HeaderNames.TransferEncoding];
+            string transferEncoding = RequestHeaders.TransferEncoding;
             if (string.Equals("chunked", transferEncoding?.Trim(), StringComparison.OrdinalIgnoreCase))
             {
                 return true;
diff --git a/src/Shared/ChunkingCookieManager/ChunkingCookieManager.cs b/src/Shared/ChunkingCookieManager/ChunkingCookieManager.cs
index acff50b94ca..30ec3c66ed6 100644
--- a/src/Shared/ChunkingCookieManager/ChunkingCookieManager.cs
+++ b/src/Shared/ChunkingCookieManager/ChunkingCookieManager.cs
@@ -284,7 +284,7 @@ namespace Microsoft.AspNetCore.Internal
             }
 
             var responseHeaders = context.Response.Headers;
-            var existingValues = responseHeaders[HeaderNames.SetCookie];
+            var existingValues = responseHeaders.SetCookie;
 
             if (!StringValues.IsNullOrEmpty(existingValues))
             {
@@ -299,7 +299,7 @@ namespace Microsoft.AspNetCore.Internal
                     }
                 }
 
-                responseHeaders[HeaderNames.SetCookie] = new StringValues(newValues.ToArray());
+                responseHeaders.SetCookie = new StringValues(newValues.ToArray());
             }
 
             var responseCookies = context.Response.Cookies;
-- 
GitLab