From f357137a12098ec14f3e85212029b92b0062c1fe Mon Sep 17 00:00:00 2001 From: AvremelM <1865736+AvremelM@users.noreply.github.com> Date: Wed, 31 Jan 2024 17:25:36 -0500 Subject: [PATCH] Create HttpCachePolicyBase, fix HttpResponseBase.Cache typing --- .../Generated/Ref.Standard.cs | 25 +++++++++++++-- .../Generated/TypeForwards.Framework.cs | 2 ++ .../HttpCachePolicyBase.cs | 28 ++++++++++++++++ .../HttpCachePolicyWrapper.cs | 32 +++++++++++++++++++ .../HttpResponseBase.cs | 2 +- .../HttpResponseWrapper.cs | 2 +- 6 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyBase.cs create mode 100644 src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyWrapper.cs diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/Ref.Standard.cs b/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/Ref.Standard.cs index 84ec1ff5a..65a0f259e 100644 --- a/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/Ref.Standard.cs +++ b/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/Ref.Standard.cs @@ -124,6 +124,27 @@ internal HttpCachePolicy() { } public void SetMaxAge(System.TimeSpan delta) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} public void SetOmitVaryStar(bool omit) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } + public partial class HttpCachePolicyBase + { + public HttpCachePolicyBase() { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public virtual System.Web.HttpCacheVaryByHeaders VaryByHeaders { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } + public virtual void SetCacheability(System.Web.HttpCacheability cacheability) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public virtual void SetCacheability(System.Web.HttpCacheability cacheability, string field) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public virtual void SetExpires(System.DateTime date) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public virtual void SetLastModified(System.DateTime date) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public virtual void SetMaxAge(System.TimeSpan delta) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public virtual void SetOmitVaryStar(bool omit) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + } + public partial class HttpCachePolicyWrapper : System.Web.HttpCachePolicyBase + { + public HttpCachePolicyWrapper(System.Web.HttpCachePolicy httpCachePolicy) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public override System.Web.HttpCacheVaryByHeaders VaryByHeaders { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } + public override void SetCacheability(System.Web.HttpCacheability cacheability) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public override void SetExpires(System.DateTime date) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public override void SetLastModified(System.DateTime date) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public override void SetMaxAge(System.TimeSpan delta) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + public override void SetOmitVaryStar(bool omit) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} + } public sealed partial class HttpCacheVaryByHeaders { internal HttpCacheVaryByHeaders() { } @@ -504,7 +525,7 @@ public partial class HttpResponseBase { public HttpResponseBase() { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} public virtual bool BufferOutput { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } - public virtual System.Web.HttpCachePolicy Cache { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } + public virtual System.Web.HttpCachePolicyBase Cache { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } public virtual string Charset { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} set { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } public virtual System.Text.Encoding ContentEncoding { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} set { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } public virtual string ContentType { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} set { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } @@ -541,7 +562,7 @@ public partial class HttpResponseWrapper : System.Web.HttpResponseBase { public HttpResponseWrapper(System.Web.HttpResponse response) { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} public override bool BufferOutput { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } - public override System.Web.HttpCachePolicy Cache { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } + public override System.Web.HttpCachePolicyBase Cache { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } public override string Charset { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} set { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } public override System.Text.Encoding ContentEncoding { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} set { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } public override string ContentType { get { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} set { throw new System.PlatformNotSupportedException("Only supported when running on ASP.NET Core or System.Web");} } diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/TypeForwards.Framework.cs b/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/TypeForwards.Framework.cs index b5778eb98..5b65bafa7 100644 --- a/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/TypeForwards.Framework.cs +++ b/src/Microsoft.AspNetCore.SystemWebAdapters/Generated/TypeForwards.Framework.cs @@ -26,6 +26,8 @@ [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpBrowserCapabilitiesWrapper))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpCacheability))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpCachePolicy))] +[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpCachePolicyBase))] +[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpCachePolicyWrapper))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpCacheVaryByHeaders))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpContext))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Web.HttpContextBase))] diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyBase.cs b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyBase.cs new file mode 100644 index 000000000..6dffda6ab --- /dev/null +++ b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyBase.cs @@ -0,0 +1,28 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics.CodeAnalysis; + +namespace System.Web; + +public class HttpCachePolicyBase +{ + [SuppressMessage("Design", "CA1065:Do not raise exceptions in unexpected locations", Justification = Constants.ApiFromAspNet)] + public virtual HttpCacheVaryByHeaders VaryByHeaders => throw new NotImplementedException(); + + public virtual void SetCacheability(HttpCacheability cacheability) => throw new NotImplementedException(); + + public virtual void SetCacheability(HttpCacheability cacheability, string field) => throw new NotImplementedException(); + + [SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Date", + Justification = "Matches HttpCachePolicy class")] + public virtual void SetLastModified(DateTime date) => throw new NotImplementedException(); + + public virtual void SetMaxAge(TimeSpan delta) => throw new NotImplementedException(); + + [SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Date", + Justification = "Matches HttpCachePolicy class")] + public virtual void SetExpires(DateTime date) => throw new NotImplementedException(); + + public virtual void SetOmitVaryStar(bool omit) => throw new NotImplementedException(); +} diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyWrapper.cs b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyWrapper.cs new file mode 100644 index 000000000..b87156f20 --- /dev/null +++ b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpCachePolicyWrapper.cs @@ -0,0 +1,32 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Web; + +public class HttpCachePolicyWrapper : HttpCachePolicyBase +{ + private HttpCachePolicy _httpCachePolicy; + + public HttpCachePolicyWrapper(HttpCachePolicy httpCachePolicy) + { + if (httpCachePolicy == null) + { + ArgumentNullException.ThrowIfNull(httpCachePolicy); + } + _httpCachePolicy = httpCachePolicy; + } + + + public override HttpCacheVaryByHeaders VaryByHeaders => _httpCachePolicy.VaryByHeaders; + + public override void SetCacheability(HttpCacheability cacheability) => _httpCachePolicy.SetCacheability(cacheability); + + public override void SetExpires(DateTime date) => _httpCachePolicy.SetExpires(date); + + public override void SetLastModified(DateTime date) => _httpCachePolicy.SetLastModified(date); + + public override void SetMaxAge(TimeSpan delta) => _httpCachePolicy.SetMaxAge(delta); + + public override void SetOmitVaryStar(bool omit) => _httpCachePolicy.SetOmitVaryStar(omit); + +} diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseBase.cs b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseBase.cs index c0e56891d..e646f024f 100644 --- a/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseBase.cs +++ b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseBase.cs @@ -96,7 +96,7 @@ public virtual Stream Filter set => throw new NotImplementedException(); } - public virtual HttpCachePolicy Cache => throw new NotImplementedException(); + public virtual HttpCachePolicyBase Cache => throw new NotImplementedException(); public virtual bool IsClientConnected => throw new NotImplementedException(); diff --git a/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseWrapper.cs b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseWrapper.cs index 19603596c..2f2ac3ace 100644 --- a/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseWrapper.cs +++ b/src/Microsoft.AspNetCore.SystemWebAdapters/HttpResponseWrapper.cs @@ -99,7 +99,7 @@ public override bool TrySkipIisCustomErrors set => _response.TrySkipIisCustomErrors = value; } - public override HttpCachePolicy Cache => _response.Cache; + public override HttpCachePolicyBase Cache => new HttpCachePolicyWrapper(_response.Cache); [AllowNull] public override Stream Filter