diff --git a/src/Http/Http.Abstractions/src/Metadata/ApiEndpointMetadata.cs b/src/Http/Http.Abstractions/src/Metadata/ApiEndpointMetadata.cs deleted file mode 100644 index 815bf2c834c9..000000000000 --- a/src/Http/Http.Abstractions/src/Metadata/ApiEndpointMetadata.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace Microsoft.AspNetCore.Http.Metadata; - -/// -/// Metadata that indicates the endpoint is intended for API clients. -/// When present, authentication handlers should prefer returning status codes over browser redirects. -/// -internal sealed class ApiEndpointMetadata : IApiEndpointMetadata -{ - /// - /// Singleton instance of . - /// - public static readonly ApiEndpointMetadata Instance = new(); - - private ApiEndpointMetadata() - { - } -} diff --git a/src/Http/Http.Abstractions/src/Metadata/DisableCookieRedirectMetadata.cs b/src/Http/Http.Abstractions/src/Metadata/DisableCookieRedirectMetadata.cs new file mode 100644 index 000000000000..d7aad7f5c217 --- /dev/null +++ b/src/Http/Http.Abstractions/src/Metadata/DisableCookieRedirectMetadata.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.AspNetCore.Http.Metadata; + +/// +/// Metadata that indicates the endpoint should disable cookie-based authentication redirects. +/// When present, authentication handlers should prefer returning status codes over browser redirects. +/// +internal sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata +{ + /// + /// Singleton instance of . + /// + public static readonly DisableCookieRedirectMetadata Instance = new(); + + private DisableCookieRedirectMetadata() + { + } +} diff --git a/src/Http/Http.Abstractions/src/Metadata/IAllowCookieRedirectMetadata.cs b/src/Http/Http.Abstractions/src/Metadata/IAllowCookieRedirectMetadata.cs new file mode 100644 index 000000000000..63c0de5859e3 --- /dev/null +++ b/src/Http/Http.Abstractions/src/Metadata/IAllowCookieRedirectMetadata.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.AspNetCore.Http.Metadata; + +/// +/// Metadata that indicates the endpoint should allow cookie-based authentication redirects. +/// This is normally the default behavior, but it exists to override no matter the order. +/// When present, the cookie authentication handler will prefer browser login or access denied redirects over 401 and 403 status codes. +/// +public interface IAllowCookieRedirectMetadata +{ +} diff --git a/src/Http/Http.Abstractions/src/Metadata/IApiEndpointMetadata.cs b/src/Http/Http.Abstractions/src/Metadata/IApiEndpointMetadata.cs deleted file mode 100644 index cadaafcae1a9..000000000000 --- a/src/Http/Http.Abstractions/src/Metadata/IApiEndpointMetadata.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace Microsoft.AspNetCore.Http.Metadata; - -/// -/// Metadata that indicates the endpoint is an API intended for programmatic access rather than direct browser navigation. -/// When present, authentication handlers should prefer returning status codes over browser redirects. -/// -public interface IApiEndpointMetadata -{ -} diff --git a/src/Http/Http.Abstractions/src/Metadata/IDisableCookieRedirectMetadata.cs b/src/Http/Http.Abstractions/src/Metadata/IDisableCookieRedirectMetadata.cs new file mode 100644 index 000000000000..c9651833552a --- /dev/null +++ b/src/Http/Http.Abstractions/src/Metadata/IDisableCookieRedirectMetadata.cs @@ -0,0 +1,17 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.AspNetCore.Http.Metadata; + +/// +/// Metadata that indicates the endpoint should disable cookie-based authentication redirects +/// typically because it is intended for API clients rather than direct browser navigation. +/// +/// overrides this no matter the order. +/// +/// When present and not overridden, the cookie authentication handler will prefer using +/// 401 and 403 status codes over redirecting to the login or access denied paths. +/// +public interface IDisableCookieRedirectMetadata +{ +} diff --git a/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt b/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt index d0fc0872dd90..6ccd592237b8 100644 --- a/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,5 +1,6 @@ #nullable enable -Microsoft.AspNetCore.Http.Metadata.IApiEndpointMetadata +Microsoft.AspNetCore.Http.Metadata.IAllowCookieRedirectMetadata +Microsoft.AspNetCore.Http.Metadata.IDisableCookieRedirectMetadata Microsoft.AspNetCore.Http.Metadata.IDisableValidationMetadata Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.Description.get -> string? Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.Description.set -> void diff --git a/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGenerator.cs b/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGenerator.cs index f5e2abacaaf1..6823c8746f02 100644 --- a/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGenerator.cs +++ b/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGenerator.cs @@ -253,7 +253,7 @@ public void Initialize(IncrementalGeneratorInitializationContext context) if (hasJsonBody || hasResponseMetadata) { - codeWriter.WriteLine(RequestDelegateGeneratorSources.ApiEndpointMetadataClass); + codeWriter.WriteLine(RequestDelegateGeneratorSources.DisableCookieRedirectMetadataClass); } if (hasFormBody || hasJsonBody || hasResponseMetadata) diff --git a/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGeneratorSources.cs b/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGeneratorSources.cs index b626db274124..4c0e6609382f 100644 --- a/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGeneratorSources.cs +++ b/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/RequestDelegateGeneratorSources.cs @@ -493,18 +493,18 @@ public AntiforgeryMetadata(bool requiresValidation) } """; - public static string ApiEndpointMetadataClass = """ - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + public static string DisableCookieRedirectMetadataClass = """ + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/StaticRouteHandlerModel/StaticRouteHandlerModel.Emitter.cs b/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/StaticRouteHandlerModel/StaticRouteHandlerModel.Emitter.cs index 97fe2dc990ff..e4a35735b65b 100644 --- a/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/StaticRouteHandlerModel/StaticRouteHandlerModel.Emitter.cs +++ b/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.RequestDelegateGenerator/StaticRouteHandlerModel/StaticRouteHandlerModel.Emitter.cs @@ -218,7 +218,7 @@ private static void EmitBuiltinResponseTypeMetadata(this Endpoint endpoint, Code else if (response.ResponseType is { } responseType) { codeWriter.WriteLine($$"""options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof({{responseType.ToDisplayString(EmitterConstants.DisplayFormatWithoutNullability)}}), contentTypes: GeneratedMetadataConstants.JsonContentType));"""); - codeWriter.WriteLine("ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder);"); + codeWriter.WriteLine("DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder);"); } } @@ -336,7 +336,7 @@ public static void EmitJsonAcceptsMetadata(this Endpoint endpoint, CodeWriter co codeWriter.WriteLine("if (!serviceProviderIsService.IsService(type))"); codeWriter.StartBlock(); codeWriter.WriteLine("options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType));"); - codeWriter.WriteLine("options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance);"); + codeWriter.WriteLine("options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance);"); codeWriter.WriteLine("break;"); codeWriter.EndBlock(); codeWriter.EndBlock(); @@ -344,7 +344,7 @@ public static void EmitJsonAcceptsMetadata(this Endpoint endpoint, CodeWriter co else { codeWriter.WriteLine("options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(contentTypes: GeneratedMetadataConstants.JsonContentType));"); - codeWriter.WriteLine("options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance);"); + codeWriter.WriteLine("options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance);"); } } diff --git a/src/Http/Http.Extensions/src/AllowCookieRedirectAttribute.cs b/src/Http/Http.Extensions/src/AllowCookieRedirectAttribute.cs new file mode 100644 index 000000000000..b559f3b1081f --- /dev/null +++ b/src/Http/Http.Extensions/src/AllowCookieRedirectAttribute.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.AspNetCore.Http.Metadata; + +namespace Microsoft.AspNetCore.Http; + +/// +/// Specifies that cookie-based authentication redirects are allowed for an endpoint. +/// This is normally the default behavior, but it exists to override no matter the order. +/// When present, the cookie authentication handler will prefer browser login or access denied redirects over 401 and 403 status codes. +/// +[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] +public sealed class AllowCookieRedirectAttribute : Attribute, IAllowCookieRedirectMetadata +{ +} diff --git a/src/Http/Http.Extensions/src/CookieRedirectEndpointConventionBuilderExtensions.cs b/src/Http/Http.Extensions/src/CookieRedirectEndpointConventionBuilderExtensions.cs new file mode 100644 index 000000000000..c7e045448d46 --- /dev/null +++ b/src/Http/Http.Extensions/src/CookieRedirectEndpointConventionBuilderExtensions.cs @@ -0,0 +1,43 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Metadata; + +namespace Microsoft.AspNetCore.Builder; + +/// +/// Cookie redirect extension methods for . +/// +public static class CookieRedirectEndpointConventionBuilderExtensions +{ + private static readonly AllowCookieRedirectAttribute _allowCookieRedirectAttribute = new(); + + /// + /// Specifies that cookie-based authentication redirects are disabled for an endpoint using . + /// When present and not overridden by or , + /// the cookie authentication handler will prefer using 401 and 403 status codes over redirecting to the login or access denied paths. + /// + /// The type of endpoint convention builder. + /// The endpoint convention builder. + /// The original convention builder parameter. + public static TBuilder DisableCookieRedirect(this TBuilder builder) where TBuilder : IEndpointConventionBuilder + { + builder.Add(b => b.Metadata.Add(DisableCookieRedirectMetadata.Instance)); + return builder; + } + + /// + /// Specifies that cookie-based authentication redirects are allowed for an endpoint using . + /// This is normally the default behavior, but it exists to override no matter the order. + /// When present, the cookie authentication handler will prefer browser login or access denied redirects over 401 and 403 status codes. + /// + /// The type of endpoint convention builder. + /// The endpoint convention builder. + /// The original convention builder parameter. + public static TBuilder AllowCookieRedirect(this TBuilder builder) where TBuilder : IEndpointConventionBuilder + { + builder.Add(b => b.Metadata.Add(_allowCookieRedirectAttribute)); + return builder; + } +} diff --git a/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt b/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt index 7dc5c58110bf..dda4ec8ff207 100644 --- a/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt @@ -1 +1,6 @@ #nullable enable +Microsoft.AspNetCore.Builder.CookieRedirectEndpointConventionBuilderExtensions +Microsoft.AspNetCore.Http.AllowCookieRedirectAttribute +Microsoft.AspNetCore.Http.AllowCookieRedirectAttribute.AllowCookieRedirectAttribute() -> void +static Microsoft.AspNetCore.Builder.CookieRedirectEndpointConventionBuilderExtensions.AllowCookieRedirect(this TBuilder builder) -> TBuilder +static Microsoft.AspNetCore.Builder.CookieRedirectEndpointConventionBuilderExtensions.DisableCookieRedirect(this TBuilder builder) -> TBuilder diff --git a/src/Http/Http.Extensions/src/RequestDelegateFactory.cs b/src/Http/Http.Extensions/src/RequestDelegateFactory.cs index f5182f47c1f5..ee76afb27f69 100644 --- a/src/Http/Http.Extensions/src/RequestDelegateFactory.cs +++ b/src/Http/Http.Extensions/src/RequestDelegateFactory.cs @@ -405,7 +405,7 @@ private static Expression[] CreateArgumentsAndInferMetadata(MethodInfo methodInf // When present, authentication handlers should prefer returning status codes over browser redirects. if (factoryContext.JsonRequestBodyParameter is not null) { - factoryContext.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + factoryContext.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } PopulateBuiltInResponseTypeMetadata(methodInfo.ReturnType, factoryContext); @@ -1062,7 +1062,7 @@ private static void PopulateBuiltInResponseTypeMetadata(Type returnType, Request { // Since this endpoint responds with JSON, we assume its an API endpoint not intended for browser navigation, // but we don't want to bother adding this metadata twice if we've already inferred it based on the expected JSON request body. - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } } diff --git a/src/Http/Http.Extensions/test/CookieRedirectEndpointConventionBuilderExtensionsTests.cs b/src/Http/Http.Extensions/test/CookieRedirectEndpointConventionBuilderExtensionsTests.cs new file mode 100644 index 000000000000..18610cdca905 --- /dev/null +++ b/src/Http/Http.Extensions/test/CookieRedirectEndpointConventionBuilderExtensionsTests.cs @@ -0,0 +1,72 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http.Metadata; + +namespace Microsoft.AspNetCore.Http.Extensions.Tests; + +public class CookieRedirectEndpointConventionBuilderExtensionsTests +{ + [Fact] + public void DisableCookieRedirect_AddsMetadata() + { + // Arrange + var builder = new TestEndpointConventionBuilder(); + + // Act + builder.DisableCookieRedirect(); + + // Assert + Assert.IsAssignableFrom(Assert.Single(builder.Metadata)); + } + + [Fact] + public void AllowCookieRedirect_AddsMetadata() + { + // Arrange + var builder = new TestEndpointConventionBuilder(); + + // Act + builder.AllowCookieRedirect(); + + // Assert + Assert.IsAssignableFrom(Assert.Single(builder.Metadata)); + } + + [Fact] + public void DisableCookieRedirect_ReturnsBuilder() + { + // Arrange + var builder = new TestEndpointConventionBuilder(); + + // Act + var result = builder.DisableCookieRedirect(); + + // Assert + Assert.Same(builder, result); + } + + [Fact] + public void AllowCookieRedirect_ReturnsBuilder() + { + // Arrange + var builder = new TestEndpointConventionBuilder(); + + // Act + var result = builder.AllowCookieRedirect(); + + // Assert + Assert.Same(builder, result); + } + + private sealed class TestEndpointConventionBuilder : EndpointBuilder, IEndpointConventionBuilder + { + public void Add(Action convention) + { + convention(this); + } + + public override Endpoint Build() => throw new NotImplementedException(); + } +} diff --git a/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs b/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs index 7cee04fb8a0f..8ace889b526b 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs +++ b/src/Http/Http.Extensions/test/RequestDelegateFactoryTests.cs @@ -2825,8 +2825,8 @@ public void Create_CombinesAllMetadata_InCorrectOrder() m => Assert.True(m is AcceptsMetadata am && am.RequestType == typeof(AddsCustomParameterMetadata)), // Inferred ParameterBinding metadata m => Assert.True(m is IParameterBindingMetadata { Name: "param1" }), - // Inferred IApiEndpointMetadata from RDF for complex request and response type - m => Assert.True(m is IApiEndpointMetadata), + // Inferred IDisableCookieRedirectMetadata from RDF for complex request and response type + m => Assert.True(m is IDisableCookieRedirectMetadata), // Inferred ProducesResponseTypeMetadata from RDF for complex type m => Assert.Equal(typeof(CountsDefaultEndpointMetadataPoco), ((IProducesResponseTypeMetadata)m).Type), // Metadata provided by parameters implementing IEndpointParameterMetadataProvider diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/HandlesEndpointsWithAndWithoutDiagnostics.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/HandlesEndpointsWithAndWithoutDiagnostics.generated.txt index 18cf2ce8010b..62465758d43e 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/HandlesEndpointsWithAndWithoutDiagnostics.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/HandlesEndpointsWithAndWithoutDiagnostics.generated.txt @@ -225,17 +225,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_NullableReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_NullableReturn.generated.txt index 04b1dc6c3bbe..2011bb74d023 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_NullableReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_NullableReturn.generated.txt @@ -363,17 +363,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_Snapshot.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_Snapshot.generated.txt index 6c1240e6b8f3..d4bed32cff50 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_Snapshot.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_BindAsync_Snapshot.generated.txt @@ -2225,17 +2225,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitBodyParam_ComplexReturn_Snapshot.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitBodyParam_ComplexReturn_Snapshot.generated.txt index 830c81d1309b..6159dd40f846 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitBodyParam_ComplexReturn_Snapshot.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitBodyParam_ComplexReturn_Snapshot.generated.txt @@ -412,17 +412,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_ComplexTypeArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_ComplexTypeArrayParam.generated.txt index bd0ceac25240..2547e7535558 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_ComplexTypeArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_ComplexTypeArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -260,17 +260,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_NullableStringArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_NullableStringArrayParam.generated.txt index e2c866e2c2bb..b2d3d5182a98 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_NullableStringArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_NullableStringArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -232,17 +232,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_StringArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_StringArrayParam.generated.txt index b2fc71b9158a..3b6dfaa17a49 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_StringArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitHeader_StringArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -232,17 +232,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_ComplexTypeArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_ComplexTypeArrayParam.generated.txt index 9aee726d2055..e4de33218466 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_ComplexTypeArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_ComplexTypeArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -260,17 +260,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional.generated.txt index 01d6808eaf6e..598d6ecd2a8d 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -260,17 +260,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt index 01d6808eaf6e..598d6ecd2a8d 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -260,17 +260,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional.generated.txt index 40a1b29bb120..6bfc8e54f428 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32?[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -260,17 +260,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt index 40a1b29bb120..6bfc8e54f428 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32?[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -260,17 +260,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableStringArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableStringArrayParam.generated.txt index 9bebb6eea5ee..a26bf2b75f56 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableStringArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_NullableStringArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -231,17 +231,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam.generated.txt index 7931fdc136d0..0b1e00050add 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -231,17 +231,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional.generated.txt index 757eb5f81f8d..fa538f0fe524 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.String[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -231,17 +231,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt index 757eb5f81f8d..fa538f0fe524 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.String[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -231,17 +231,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitServiceParam_SimpleReturn_Snapshot.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitServiceParam_SimpleReturn_Snapshot.generated.txt index 2e18c631a26a..73f90510b5f0 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitServiceParam_SimpleReturn_Snapshot.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitServiceParam_SimpleReturn_Snapshot.generated.txt @@ -439,17 +439,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitSource_SimpleReturn_Snapshot.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitSource_SimpleReturn_Snapshot.generated.txt index 3663350edf78..9b10d9642c06 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitSource_SimpleReturn_Snapshot.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ExplicitSource_SimpleReturn_Snapshot.generated.txt @@ -606,17 +606,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_ComplexTypeArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_ComplexTypeArrayParam.generated.txt index 07e79ab29820..718e7346565c 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_ComplexTypeArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_ComplexTypeArrayParam.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -267,17 +267,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional.generated.txt index e51b39e6f806..93b03a43f10b 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -267,17 +267,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt index e51b39e6f806..93b03a43f10b 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_IntArrayParam_Optional_QueryNotPresent.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -267,17 +267,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional.generated.txt index 2e4b0d343e08..a4534206e6cd 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32?[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -267,17 +267,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt index 2e4b0d343e08..a4534206e6cd 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableIntArrayParam_Optional_QueryNotPresent.generated.txt @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Http.Generated var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: true, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32?[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -267,17 +267,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam.generated.txt index 857501669994..15f5ee3f3a31 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_EmptyQueryValues.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_EmptyQueryValues.generated.txt index 857501669994..15f5ee3f3a31 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_EmptyQueryValues.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_EmptyQueryValues.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_QueryNotPresent.generated.txt index 857501669994..15f5ee3f3a31 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_NullableStringArrayParam_QueryNotPresent.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam.generated.txt index 9c1fe26e5902..1bfa6b37f0a0 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional.generated.txt index 65ddf7109200..18b9123305b6 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.String[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt index 65ddf7109200..18b9123305b6 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ImplicitQuery_StringArrayParam_Optional_QueryNotPresent.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: true)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.String[]), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_JsonBodyOrService_HandlesBothJsonAndService.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_JsonBodyOrService_HandlesBothJsonAndService.generated.txt index bc9c6a59d734..2eedb8ebb4e1 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_JsonBodyOrService_HandlesBothJsonAndService.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_JsonBodyOrService_HandlesBothJsonAndService.generated.txt @@ -82,7 +82,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -346,17 +346,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleSpecialTypeParam_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleSpecialTypeParam_StringReturn.generated.txt index 560f0ec1f94a..5f19b3e84abc 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleSpecialTypeParam_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleSpecialTypeParam_StringReturn.generated.txt @@ -234,17 +234,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleStringParam_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleStringParam_StringReturn.generated.txt index 0c26ae021468..df4453e888a8 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleStringParam_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_MultipleStringParam_StringReturn.generated.txt @@ -267,17 +267,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_NoParam_StringReturn_WithFilter.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_NoParam_StringReturn_WithFilter.generated.txt index 18cf2ce8010b..62465758d43e 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_NoParam_StringReturn_WithFilter.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_NoParam_StringReturn_WithFilter.generated.txt @@ -225,17 +225,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsString_Has_Metadata.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsString_Has_Metadata.generated.txt index 18cf2ce8010b..62465758d43e 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsString_Has_Metadata.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsString_Has_Metadata.generated.txt @@ -225,17 +225,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsTodo_Has_Metadata.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsTodo_Has_Metadata.generated.txt index 808d55a96981..c13dd9830c01 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsTodo_Has_Metadata.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_ReturnsTodo_Has_Metadata.generated.txt @@ -70,7 +70,7 @@ namespace Microsoft.AspNetCore.Http.Generated Debug.Assert(options.EndpointBuilder != null, "EndpointBuilder not found."); options.EndpointBuilder.Metadata.Add(new System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.AspNetCore.Http.RequestDelegateGenerator, Version=42.42.42.42, Culture=neutral, PublicKeyToken=adb9793829ddae60", "42.42.42.42")); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::Microsoft.AspNetCore.Http.Generators.Tests.Todo), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -219,17 +219,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleComplexTypeParam_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleComplexTypeParam_StringReturn.generated.txt index 509930131549..1fcb2d9a7010 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleComplexTypeParam_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleComplexTypeParam_StringReturn.generated.txt @@ -266,17 +266,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleEnumParam_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleEnumParam_StringReturn.generated.txt index b1b71f8eecd5..dca5ca2932c2 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleEnumParam_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleEnumParam_StringReturn.generated.txt @@ -266,17 +266,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleNullableStringParam_WithEmptyQueryStringValueProvided_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleNullableStringParam_WithEmptyQueryStringValueProvided_StringReturn.generated.txt index b56621cb8c50..44bf443feb7f 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleNullableStringParam_WithEmptyQueryStringValueProvided_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_SingleNullableStringParam_WithEmptyQueryStringValueProvided_StringReturn.generated.txt @@ -238,17 +238,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_TakesCustomMetadataEmitter_Has_Metadata.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_TakesCustomMetadataEmitter_Has_Metadata.generated.txt index 72e03e06b74e..f034206dfb59 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_TakesCustomMetadataEmitter_Has_Metadata.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapAction_TakesCustomMetadataEmitter_Has_Metadata.generated.txt @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -334,17 +334,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Get_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Get_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt index 7409065d2ce6..48eafa3d6687 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Get_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Get_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -335,17 +335,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndGet_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndGet_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt index 7409065d2ce6..48eafa3d6687 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndGet_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndGet_WithArrayQueryString_AndBody_ShouldUseQueryString.generated.txt @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -335,17 +335,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndPut_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndPut_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt index 7409065d2ce6..48eafa3d6687 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndPut_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_PostAndPut_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -335,17 +335,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Post_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Post_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt index 7409065d2ce6..48eafa3d6687 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Post_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapMethods_Post_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -335,17 +335,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt index 3fb5a66501a7..d919734fe2bc 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_AndBody_ShouldUseBody.generated.txt @@ -81,7 +81,7 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } @@ -335,17 +335,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_ShouldFail.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_ShouldFail.generated.txt index f34ec56593e5..feb0157220ce 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_ShouldFail.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/MapPost_WithArrayQueryString_ShouldFail.generated.txt @@ -81,14 +81,14 @@ namespace Microsoft.AspNetCore.Http.Generated if (!serviceProviderIsService.IsService(type)) { options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(type: type, isOptional: isOptional, contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); break; } } var parameters = methodInfo.GetParameters(); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("p", parameters[0], hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(global::System.Int32), contentTypes: GeneratedMetadataConstants.JsonContentType)); - ApiEndpointMetadata.AddApiEndpointMetadataIfMissing(options.EndpointBuilder); + DisableCookieRedirectMetadata.AddMetadataIfMissing(options.EndpointBuilder); return new RequestDelegateMetadataResult { EndpointMetadata = options.EndpointBuilder.Metadata.AsReadOnly() }; }; RequestDelegateFactoryFunc createRequestDelegate = (del, options, inferredMetadataResult) => @@ -329,17 +329,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_NoParam_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_NoParam_StringReturn.generated.txt index bf51a39927f5..93d79c0abaec 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_NoParam_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_NoParam_StringReturn.generated.txt @@ -414,17 +414,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_WithParams_StringReturn.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_WithParams_StringReturn.generated.txt index ffb90a91f7fc..e2b916aea081 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_WithParams_StringReturn.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/Multiple_MapAction_WithParams_StringReturn.generated.txt @@ -428,17 +428,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsDifferentInterceptorsFromSameLocation.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsDifferentInterceptorsFromSameLocation.generated.txt index fea0e359a92f..2211c3a0291f 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsDifferentInterceptorsFromSameLocation.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsDifferentInterceptorsFromSameLocation.generated.txt @@ -388,17 +388,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsSameInterceptorsFromDifferentFiles.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsSameInterceptorsFromDifferentFiles.generated.txt index cafc9280c930..df7e24a9eebc 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsSameInterceptorsFromDifferentFiles.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/SupportsSameInterceptorsFromDifferentFiles.generated.txt @@ -257,17 +257,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/VerifyAsParametersBaseline.generated.txt b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/VerifyAsParametersBaseline.generated.txt index 489a8b16b73a..02fc8baf1ac0 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/VerifyAsParametersBaseline.generated.txt +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/Baselines/VerifyAsParametersBaseline.generated.txt @@ -446,7 +446,7 @@ namespace Microsoft.AspNetCore.Http.Generated Debug.Assert(options.EndpointBuilder != null, "EndpointBuilder not found."); options.EndpointBuilder.Metadata.Add(new System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.AspNetCore.Http.RequestDelegateGenerator, Version=42.42.42.42, Culture=neutral, PublicKeyToken=adb9793829ddae60", "42.42.42.42")); options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("HttpContext", new PropertyAsParameterInfo(false, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithImplicitFromBody)!.GetProperty("HttpContext")!, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithImplicitFromBody).GetConstructor(new[] { typeof(Microsoft.AspNetCore.Http.HttpContext), typeof(Microsoft.AspNetCore.Http.Generators.Tests.TodoStruct) })?.GetParameters()[0]), hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("Todo", new PropertyAsParameterInfo(false, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithImplicitFromBody)!.GetProperty("Todo")!, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithImplicitFromBody).GetConstructor(new[] { typeof(Microsoft.AspNetCore.Http.HttpContext), typeof(Microsoft.AspNetCore.Http.Generators.Tests.TodoStruct) })?.GetParameters()[1]), hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(string), contentTypes: GeneratedMetadataConstants.PlaintextContentType)); @@ -568,7 +568,7 @@ namespace Microsoft.AspNetCore.Http.Generated Debug.Assert(options.EndpointBuilder != null, "EndpointBuilder not found."); options.EndpointBuilder.Metadata.Add(new System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.AspNetCore.Http.RequestDelegateGenerator, Version=42.42.42.42, Culture=neutral, PublicKeyToken=adb9793829ddae60", "42.42.42.42")); options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("HttpContext", new PropertyAsParameterInfo(false, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithMetadataType)!.GetProperty("HttpContext")!, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithMetadataType).GetConstructor(new[] { typeof(Microsoft.AspNetCore.Http.HttpContext), typeof(Microsoft.AspNetCore.Http.Generators.Tests.AddsCustomParameterMetadataAsProperty) })?.GetParameters()[0]), hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("Value", new PropertyAsParameterInfo(false, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithMetadataType)!.GetProperty("Value")!, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParametersListWithMetadataType).GetConstructor(new[] { typeof(Microsoft.AspNetCore.Http.HttpContext), typeof(Microsoft.AspNetCore.Http.Generators.Tests.AddsCustomParameterMetadataAsProperty) })?.GetParameters()[1]), hasTryParse: false, hasBindAsync: false, isOptional: false)); var parameterInfos = methodInfo.GetParameters(); @@ -685,7 +685,7 @@ namespace Microsoft.AspNetCore.Http.Generated Debug.Assert(options.EndpointBuilder != null, "EndpointBuilder not found."); options.EndpointBuilder.Metadata.Add(new System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.AspNetCore.Http.RequestDelegateGenerator, Version=42.42.42.42, Culture=neutral, PublicKeyToken=adb9793829ddae60", "42.42.42.42")); options.EndpointBuilder.Metadata.Add(new AcceptsMetadata(contentTypes: GeneratedMetadataConstants.JsonContentType)); - options.EndpointBuilder.Metadata.Add(ApiEndpointMetadata.Instance); + options.EndpointBuilder.Metadata.Add(DisableCookieRedirectMetadata.Instance); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("Todo", new PropertyAsParameterInfo(false, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParameterRecordStructWithJsonBodyOrService)!.GetProperty("Todo")!), hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ParameterBindingMetadata("Service", new PropertyAsParameterInfo(false, typeof(Microsoft.AspNetCore.Http.Generators.Tests.ParameterRecordStructWithJsonBodyOrService)!.GetProperty("Service")!), hasTryParse: false, hasBindAsync: false, isOptional: false)); options.EndpointBuilder.Metadata.Add(new ProducesResponseTypeMetadata(statusCode: StatusCodes.Status200OK, type: typeof(string), contentTypes: GeneratedMetadataConstants.PlaintextContentType)); @@ -969,17 +969,17 @@ namespace Microsoft.AspNetCore.Http.Generated } - file sealed class ApiEndpointMetadata : IApiEndpointMetadata + file sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static readonly ApiEndpointMetadata Instance = new(); + public static readonly DisableCookieRedirectMetadata Instance = new(); - private ApiEndpointMetadata() + private DisableCookieRedirectMetadata() { } - public static void AddApiEndpointMetadataIfMissing(EndpointBuilder builder) + public static void AddMetadataIfMissing(EndpointBuilder builder) { - if (!builder.Metadata.Any(m => m is IApiEndpointMetadata)) + if (!builder.Metadata.Any(m => m is IDisableCookieRedirectMetadata)) { builder.Metadata.Add(Instance); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.Metadata.cs b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.Metadata.cs index 1f3412e54391..2814a136e55f 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.Metadata.cs +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.Metadata.cs @@ -506,10 +506,10 @@ public async Task InferMetadata_ThenCreate_CombinesAllMetadata_InCorrectOrder() // Act var endpoint = GetEndpointFromCompilation(compilation); - // IApiEndpointMetadata is tricky to order consistently because it depends on whether AddsCustomParameterMetadata is registered - // as a service at runtime. However, the order of IApiEndpointMetadata is not significant since there's no way to override it + // IDisableCookieRedirectMetadata is tricky to order consistently because it depends on whether AddsCustomParameterMetadata is registered + // as a service at runtime. However, the order of IDisableCookieRedirectMetadata is not significant since there's no way to override it // other than removing it. - Assert.Single(endpoint.Metadata, m => m is IApiEndpointMetadata); + Assert.Single(endpoint.Metadata, m => m is IDisableCookieRedirectMetadata); // Assert // NOTE: Depending on whether we are running under RDG or RDG, there are some generated types which @@ -525,7 +525,7 @@ m is not HttpMethodMetadata && m is not Attribute1 && m is not Attribute2 && m is not IRouteDiagnosticsMetadata && - m is not IApiEndpointMetadata); + m is not IDisableCookieRedirectMetadata); Assert.Collection(filteredMetadata, // Inferred AcceptsMetadata from RDF for complex type diff --git a/src/Http/Http.Results/src/Accepted.cs b/src/Http/Http.Results/src/Accepted.cs index d71fe9072c7e..b6b890960848 100644 --- a/src/Http/Http.Results/src/Accepted.cs +++ b/src/Http/Http.Results/src/Accepted.cs @@ -82,6 +82,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status202Accepted, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/AcceptedAtRoute.cs b/src/Http/Http.Results/src/AcceptedAtRoute.cs index 900ee507d9cf..8c5d5a7c7b04 100644 --- a/src/Http/Http.Results/src/AcceptedAtRoute.cs +++ b/src/Http/Http.Results/src/AcceptedAtRoute.cs @@ -109,6 +109,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status202Accepted, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs b/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs index b8e4304a7237..026a040fc35c 100644 --- a/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs +++ b/src/Http/Http.Results/src/AcceptedAtRouteOfT.cs @@ -123,6 +123,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status202Accepted, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/AcceptedOfT.cs b/src/Http/Http.Results/src/AcceptedOfT.cs index 346070714b43..4fdc346ebabd 100644 --- a/src/Http/Http.Results/src/AcceptedOfT.cs +++ b/src/Http/Http.Results/src/AcceptedOfT.cs @@ -101,6 +101,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status202Accepted, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/BadRequest.cs b/src/Http/Http.Results/src/BadRequest.cs index 0356afedc2c7..70a6eba3199f 100644 --- a/src/Http/Http.Results/src/BadRequest.cs +++ b/src/Http/Http.Results/src/BadRequest.cs @@ -52,6 +52,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status400BadRequest, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/BadRequestOfT.cs b/src/Http/Http.Results/src/BadRequestOfT.cs index b8fa51423d7e..32bb7a0ca613 100644 --- a/src/Http/Http.Results/src/BadRequestOfT.cs +++ b/src/Http/Http.Results/src/BadRequestOfT.cs @@ -66,6 +66,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status400BadRequest, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/Conflict.cs b/src/Http/Http.Results/src/Conflict.cs index f0067ba4aea1..1de48f75a455 100644 --- a/src/Http/Http.Results/src/Conflict.cs +++ b/src/Http/Http.Results/src/Conflict.cs @@ -52,6 +52,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status409Conflict, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/ConflictOfT.cs b/src/Http/Http.Results/src/ConflictOfT.cs index dda54d9dd5cc..32241e2b9424 100644 --- a/src/Http/Http.Results/src/ConflictOfT.cs +++ b/src/Http/Http.Results/src/ConflictOfT.cs @@ -66,6 +66,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status409Conflict, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/Created.cs b/src/Http/Http.Results/src/Created.cs index 1959556280c9..e9eb9fa96655 100644 --- a/src/Http/Http.Results/src/Created.cs +++ b/src/Http/Http.Results/src/Created.cs @@ -82,6 +82,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status201Created, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/CreatedAtRoute.cs b/src/Http/Http.Results/src/CreatedAtRoute.cs index 2ff79596ba36..e194030ee327 100644 --- a/src/Http/Http.Results/src/CreatedAtRoute.cs +++ b/src/Http/Http.Results/src/CreatedAtRoute.cs @@ -109,6 +109,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status201Created, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/CreatedAtRouteOfT.cs b/src/Http/Http.Results/src/CreatedAtRouteOfT.cs index a2868afdc0a1..9b972b29c044 100644 --- a/src/Http/Http.Results/src/CreatedAtRouteOfT.cs +++ b/src/Http/Http.Results/src/CreatedAtRouteOfT.cs @@ -126,6 +126,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status201Created, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/CreatedOfT.cs b/src/Http/Http.Results/src/CreatedOfT.cs index a12e52b9f69f..267f25fae39a 100644 --- a/src/Http/Http.Results/src/CreatedOfT.cs +++ b/src/Http/Http.Results/src/CreatedOfT.cs @@ -100,6 +100,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status201Created, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/InternalServerErrorOfT.cs b/src/Http/Http.Results/src/InternalServerErrorOfT.cs index c726debf67c0..1a813205de25 100644 --- a/src/Http/Http.Results/src/InternalServerErrorOfT.cs +++ b/src/Http/Http.Results/src/InternalServerErrorOfT.cs @@ -66,6 +66,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status500InternalServerError, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/JsonHttpResultOfT.cs b/src/Http/Http.Results/src/JsonHttpResultOfT.cs index fea230609a20..d016be7f97e0 100644 --- a/src/Http/Http.Results/src/JsonHttpResultOfT.cs +++ b/src/Http/Http.Results/src/JsonHttpResultOfT.cs @@ -137,6 +137,6 @@ public Task ExecuteAsync(HttpContext httpContext) static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder) { - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/NoContent.cs b/src/Http/Http.Results/src/NoContent.cs index 35ffb3c56701..e76f8cc0f68c 100644 --- a/src/Http/Http.Results/src/NoContent.cs +++ b/src/Http/Http.Results/src/NoContent.cs @@ -52,6 +52,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status204NoContent, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/NotFoundOfT.cs b/src/Http/Http.Results/src/NotFoundOfT.cs index d37a4ee9707c..6c27054e81bd 100644 --- a/src/Http/Http.Results/src/NotFoundOfT.cs +++ b/src/Http/Http.Results/src/NotFoundOfT.cs @@ -65,6 +65,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status404NotFound, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/Ok.cs b/src/Http/Http.Results/src/Ok.cs index 837a0fa7513c..c348934d1523 100644 --- a/src/Http/Http.Results/src/Ok.cs +++ b/src/Http/Http.Results/src/Ok.cs @@ -51,6 +51,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status200OK, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/OkOfT.cs b/src/Http/Http.Results/src/OkOfT.cs index 7f19598effe9..6939fb290f19 100644 --- a/src/Http/Http.Results/src/OkOfT.cs +++ b/src/Http/Http.Results/src/OkOfT.cs @@ -65,6 +65,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status200OK, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/ProblemHttpResult.cs b/src/Http/Http.Results/src/ProblemHttpResult.cs index 8ac29336f053..2aa3a7418653 100644 --- a/src/Http/Http.Results/src/ProblemHttpResult.cs +++ b/src/Http/Http.Results/src/ProblemHttpResult.cs @@ -79,6 +79,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(method); ArgumentNullException.ThrowIfNull(builder); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/ServerSentEventsResult.cs b/src/Http/Http.Results/src/ServerSentEventsResult.cs index a7951acd1554..5cbb9d871f60 100644 --- a/src/Http/Http.Results/src/ServerSentEventsResult.cs +++ b/src/Http/Http.Results/src/ServerSentEventsResult.cs @@ -105,6 +105,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status200OK, typeof(SseItem), contentTypes: ["text/event-stream"])); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/UnprocessableEntity.cs b/src/Http/Http.Results/src/UnprocessableEntity.cs index 49d3982720b8..298e162c7ae0 100644 --- a/src/Http/Http.Results/src/UnprocessableEntity.cs +++ b/src/Http/Http.Results/src/UnprocessableEntity.cs @@ -52,6 +52,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(new ProducesResponseTypeMetadata(StatusCodes.Status422UnprocessableEntity, typeof(void))); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/UnprocessableEntityOfT.cs b/src/Http/Http.Results/src/UnprocessableEntityOfT.cs index 2d1ee494a271..c59c519ec0fd 100644 --- a/src/Http/Http.Results/src/UnprocessableEntityOfT.cs +++ b/src/Http/Http.Results/src/UnprocessableEntityOfT.cs @@ -66,6 +66,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(TValue), StatusCodes.Status422UnprocessableEntity, ContentTypeConstants.ApplicationJsonContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/src/ValidationProblem.cs b/src/Http/Http.Results/src/ValidationProblem.cs index c4a539c9cd5f..bd4c75dda703 100644 --- a/src/Http/Http.Results/src/ValidationProblem.cs +++ b/src/Http/Http.Results/src/ValidationProblem.cs @@ -77,6 +77,6 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi ArgumentNullException.ThrowIfNull(builder); builder.Metadata.Add(ProducesResponseTypeMetadata.CreateUnvalidated(typeof(HttpValidationProblemDetails), StatusCodes.Status400BadRequest, ContentTypeConstants.ProblemDetailsContentTypes)); - builder.Metadata.Add(ApiEndpointMetadata.Instance); + builder.Metadata.Add(DisableCookieRedirectMetadata.Instance); } } diff --git a/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs b/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs index 1d53452fa65e..9423fb06142d 100644 --- a/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs +++ b/src/Http/Http.Results/test/AcceptedAtRouteOfTResultTests.cs @@ -135,7 +135,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs b/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs index 15a93310e80c..67c2657fb42c 100644 --- a/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs +++ b/src/Http/Http.Results/test/AcceptedAtRouteResultTests.cs @@ -88,7 +88,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status202Accepted, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/AcceptedOfTResultTests.cs b/src/Http/Http.Results/test/AcceptedOfTResultTests.cs index 2ee6e03193d4..b2d16737c4b6 100644 --- a/src/Http/Http.Results/test/AcceptedOfTResultTests.cs +++ b/src/Http/Http.Results/test/AcceptedOfTResultTests.cs @@ -76,7 +76,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/AcceptedResultTests.cs b/src/Http/Http.Results/test/AcceptedResultTests.cs index 171b45112174..fdb97dcc9e88 100644 --- a/src/Http/Http.Results/test/AcceptedResultTests.cs +++ b/src/Http/Http.Results/test/AcceptedResultTests.cs @@ -45,7 +45,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status202Accepted, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/BadRequestOfTResultTests.cs b/src/Http/Http.Results/test/BadRequestOfTResultTests.cs index c930db6ea80a..c58041b203d8 100644 --- a/src/Http/Http.Results/test/BadRequestOfTResultTests.cs +++ b/src/Http/Http.Results/test/BadRequestOfTResultTests.cs @@ -119,7 +119,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/BadRequestResultTests.cs b/src/Http/Http.Results/test/BadRequestResultTests.cs index cca2a4d139ee..c8bac8d0282a 100644 --- a/src/Http/Http.Results/test/BadRequestResultTests.cs +++ b/src/Http/Http.Results/test/BadRequestResultTests.cs @@ -58,7 +58,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status400BadRequest, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/ConflictOfTResultTests.cs b/src/Http/Http.Results/test/ConflictOfTResultTests.cs index be4e43d441df..fb2a0b655915 100644 --- a/src/Http/Http.Results/test/ConflictOfTResultTests.cs +++ b/src/Http/Http.Results/test/ConflictOfTResultTests.cs @@ -97,7 +97,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/ConflictResultTests.cs b/src/Http/Http.Results/test/ConflictResultTests.cs index 2f639948eac6..449eb7665b88 100644 --- a/src/Http/Http.Results/test/ConflictResultTests.cs +++ b/src/Http/Http.Results/test/ConflictResultTests.cs @@ -59,7 +59,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status409Conflict, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs b/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs index a55f7dd6ef9c..82591bc7fc27 100644 --- a/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs +++ b/src/Http/Http.Results/test/CreatedAtRouteOfTResultTests.cs @@ -105,7 +105,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs b/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs index 5a36fdcce055..077bd18bfd7a 100644 --- a/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs +++ b/src/Http/Http.Results/test/CreatedAtRouteResultTests.cs @@ -86,7 +86,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status201Created, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/CreatedOfTResultTests.cs b/src/Http/Http.Results/test/CreatedOfTResultTests.cs index b4b5747745a1..600370f60386 100644 --- a/src/Http/Http.Results/test/CreatedOfTResultTests.cs +++ b/src/Http/Http.Results/test/CreatedOfTResultTests.cs @@ -111,7 +111,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/CreatedResultTests.cs b/src/Http/Http.Results/test/CreatedResultTests.cs index af1c8a1179b8..fb5e5e7f9056 100644 --- a/src/Http/Http.Results/test/CreatedResultTests.cs +++ b/src/Http/Http.Results/test/CreatedResultTests.cs @@ -76,7 +76,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status201Created, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/InternalServerErrorOfTResultTests.cs b/src/Http/Http.Results/test/InternalServerErrorOfTResultTests.cs index 1ee5bd751053..900cfa3e3a36 100644 --- a/src/Http/Http.Results/test/InternalServerErrorOfTResultTests.cs +++ b/src/Http/Http.Results/test/InternalServerErrorOfTResultTests.cs @@ -119,7 +119,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/JsonResultTests.cs b/src/Http/Http.Results/test/JsonResultTests.cs index 52d76c0a03c9..6e2b05dbcc19 100644 --- a/src/Http/Http.Results/test/JsonResultTests.cs +++ b/src/Http/Http.Results/test/JsonResultTests.cs @@ -327,7 +327,7 @@ public void PopulateMetadata_AddsNonBrowserEndpointMetadata() PopulateMetadata>(((Delegate)MyApi).GetMethodInfo(), builder); // Assert - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } private static void PopulateMetadata(MethodInfo method, EndpointBuilder builder) diff --git a/src/Http/Http.Results/test/NoContentResultTests.cs b/src/Http/Http.Results/test/NoContentResultTests.cs index fc1cae4a95aa..ce6047dd25d7 100644 --- a/src/Http/Http.Results/test/NoContentResultTests.cs +++ b/src/Http/Http.Results/test/NoContentResultTests.cs @@ -56,7 +56,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); // Assert ApiEndpointMetadata is added - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/NotFoundOfTResultTests.cs b/src/Http/Http.Results/test/NotFoundOfTResultTests.cs index ec15a5c8a7e8..4ee3c6a6eed7 100644 --- a/src/Http/Http.Results/test/NotFoundOfTResultTests.cs +++ b/src/Http/Http.Results/test/NotFoundOfTResultTests.cs @@ -79,7 +79,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/OkOfTResultTests.cs b/src/Http/Http.Results/test/OkOfTResultTests.cs index 85693056570b..0fbd02fa3cd8 100644 --- a/src/Http/Http.Results/test/OkOfTResultTests.cs +++ b/src/Http/Http.Results/test/OkOfTResultTests.cs @@ -96,7 +96,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/OkResultTests.cs b/src/Http/Http.Results/test/OkResultTests.cs index 98cac07cbb60..26a777a7c5e1 100644 --- a/src/Http/Http.Results/test/OkResultTests.cs +++ b/src/Http/Http.Results/test/OkResultTests.cs @@ -57,7 +57,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status200OK, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs b/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs index 8c8161f9955c..16a0dfa3e14e 100644 --- a/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs +++ b/src/Http/Http.Results/test/UnprocessableEntityOfTResultTests.cs @@ -96,7 +96,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(typeof(Todo), producesResponseTypeMetadata.Type); Assert.Single(producesResponseTypeMetadata.ContentTypes, "application/json"); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs b/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs index 7931b226c065..ea6eba2d668d 100644 --- a/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs +++ b/src/Http/Http.Results/test/UnprocessableEntityResultTests.cs @@ -58,7 +58,7 @@ public void PopulateMetadata_AddsResponseTypeMetadata() Assert.Equal(StatusCodes.Status422UnprocessableEntity, producesResponseTypeMetadata.StatusCode); Assert.Equal(typeof(void), producesResponseTypeMetadata.Type); - Assert.Contains(builder.Metadata, m => m is IApiEndpointMetadata); + Assert.Contains(builder.Metadata, m => m is IDisableCookieRedirectMetadata); } [Fact] diff --git a/src/Mvc/Mvc.Core/src/ApiControllerAttribute.cs b/src/Mvc/Mvc.Core/src/ApiControllerAttribute.cs index f7179b0b447d..cde73404a399 100644 --- a/src/Mvc/Mvc.Core/src/ApiControllerAttribute.cs +++ b/src/Mvc/Mvc.Core/src/ApiControllerAttribute.cs @@ -18,6 +18,6 @@ namespace Microsoft.AspNetCore.Mvc; /// /// [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class, AllowMultiple = false, Inherited = true)] -public class ApiControllerAttribute : ControllerAttribute, IApiBehaviorMetadata, IApiEndpointMetadata +public class ApiControllerAttribute : ControllerAttribute, IApiBehaviorMetadata, IDisableCookieRedirectMetadata { } diff --git a/src/Mvc/Mvc.Core/test/ApplicationModels/DefaultApplicationModelProviderTest.cs b/src/Mvc/Mvc.Core/test/ApplicationModels/DefaultApplicationModelProviderTest.cs index c8c6368fe7e8..082b7e498b42 100644 --- a/src/Mvc/Mvc.Core/test/ApplicationModels/DefaultApplicationModelProviderTest.cs +++ b/src/Mvc/Mvc.Core/test/ApplicationModels/DefaultApplicationModelProviderTest.cs @@ -1280,7 +1280,7 @@ public void AddReturnTypeMetadata_ExtractsMetadataFromReturnType() Assert.NotNull(selector.EndpointMetadata); Assert.Equal(2, selector.EndpointMetadata.Count); Assert.Single(selector.EndpointMetadata.OfType()); - Assert.Single(selector.EndpointMetadata.OfType()); + Assert.Single(selector.EndpointMetadata.OfType()); Assert.Equal(200, ((ProducesResponseTypeMetadata)selector.EndpointMetadata[0]).StatusCode); } diff --git a/src/Security/Authentication/Cookies/src/CookieAuthenticationEvents.cs b/src/Security/Authentication/Cookies/src/CookieAuthenticationEvents.cs index 994d999aaf52..35a73901c06b 100644 --- a/src/Security/Authentication/Cookies/src/CookieAuthenticationEvents.cs +++ b/src/Security/Authentication/Cookies/src/CookieAuthenticationEvents.cs @@ -12,6 +12,8 @@ namespace Microsoft.AspNetCore.Authentication.Cookies; /// public class CookieAuthenticationEvents { + private static readonly bool _ignoreCookieRedirectMetadata = AppContext.TryGetSwitch("Microsoft.AspNetCore.Authentication.Cookies.IgnoreRedirectMetadata", out var isEnabled) && isEnabled; + /// /// Invoked to validate the principal. /// @@ -42,7 +44,7 @@ public class CookieAuthenticationEvents /// public Func, Task> OnRedirectToLogin { get; set; } = context => { - if (IsAjaxRequest(context.Request) || IsApiEndpoint(context.HttpContext)) + if (IsAjaxRequest(context.Request) || IsCookieRedirectDisabledByMetadata(context.HttpContext)) { context.Response.Headers.Location = context.RedirectUri; context.Response.StatusCode = 401; @@ -59,7 +61,7 @@ public class CookieAuthenticationEvents /// public Func, Task> OnRedirectToAccessDenied { get; set; } = context => { - if (IsAjaxRequest(context.Request) || IsApiEndpoint(context.HttpContext)) + if (IsAjaxRequest(context.Request) || IsCookieRedirectDisabledByMetadata(context.HttpContext)) { context.Response.Headers.Location = context.RedirectUri; context.Response.StatusCode = 403; @@ -109,10 +111,16 @@ private static bool IsAjaxRequest(HttpRequest request) string.Equals(request.Headers.XRequestedWith, "XMLHttpRequest", StringComparison.Ordinal); } - private static bool IsApiEndpoint(HttpContext context) + private static bool IsCookieRedirectDisabledByMetadata(HttpContext context) { + if (_ignoreCookieRedirectMetadata) + { + return false; + } + var endpoint = context.GetEndpoint(); - return endpoint?.Metadata.GetMetadata() is not null; + return endpoint?.Metadata.GetMetadata() is not null && + endpoint?.Metadata.GetMetadata() is null; } /// diff --git a/src/Security/Authentication/test/CookieTests.cs b/src/Security/Authentication/test/CookieTests.cs index 3dc0d638b8cf..9f209173fa35 100644 --- a/src/Security/Authentication/test/CookieTests.cs +++ b/src/Security/Authentication/test/CookieTests.cs @@ -18,6 +18,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Microsoft.Extensions.Time.Testing; +using Microsoft.AspNetCore.Routing; namespace Microsoft.AspNetCore.Authentication.Cookies; @@ -98,7 +99,7 @@ public async Task AjaxChallengeRedirectTurnsInto200WithLocationHeader() } [Fact] - public async Task ApiEndpointChallengeReturns401WithLocationHeader() + public async Task CanConfigure401ChallengeInsteadOfRedirectWithMetadata() { using var host = await CreateHost(s => { }); using var server = host.GetTestServer(); @@ -110,7 +111,7 @@ public async Task ApiEndpointChallengeReturns401WithLocationHeader() } [Fact] - public async Task ApiEndpointForbidReturns403WithLocationHeader() + public async Task CanConfigure403ForbiddenInsteadOfRedirectWithMetadata() { using var host = await CreateHost(s => { }); using var server = host.GetTestServer(); @@ -121,6 +122,30 @@ public async Task ApiEndpointForbidReturns403WithLocationHeader() Assert.StartsWith("http://example.com/Account/AccessDenied", responded.Single()); } + [Fact] + public async Task CanReenableLoginRedirectWithMetadata() + { + using var host = await CreateHost(s => { }); + using var server = host.GetTestServer(); + var transaction = await SendAsync(server, "http://example.com/api/jk/challenge"); + Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); + var responded = transaction.Response.Headers.GetValues("Location"); + Assert.Single(responded); + Assert.StartsWith("http://example.com/Account/Login", responded.Single()); + } + + [Fact] + public async Task CanReenableAccessDeniedRedirectWithMetadata() + { + using var host = await CreateHost(s => { }); + using var server = host.GetTestServer(); + var transaction = await SendAsync(server, "http://example.com/api/jk/forbid"); + Assert.Equal(HttpStatusCode.Redirect, transaction.Response.StatusCode); + var responded = transaction.Response.Headers.GetValues("Location"); + Assert.Single(responded); + Assert.StartsWith("http://example.com/Account/AccessDenied", responded.Single()); + } + [Fact] public async Task ProtectedCustomRequestShouldRedirectToCustomRedirectUri() { @@ -1908,17 +1933,25 @@ private static async Task CreateHostWithServices(Action { - var apiRouteGroup = endpoints.MapGroup("/api").WithMetadata(new TestApiEndpointMetadata()); - // Add endpoints with IApiEndpointMetadata - apiRouteGroup.MapGet("/challenge", async context => + void AddChallengeAndForbidEndpoints(IEndpointRouteBuilder routeGroup) { - await context.ChallengeAsync(CookieAuthenticationDefaults.AuthenticationScheme); - }); + routeGroup.MapGet("/challenge", async context => + { + await context.ChallengeAsync(CookieAuthenticationDefaults.AuthenticationScheme); + }); - apiRouteGroup.MapGet("/forbid", async context => - { - await context.ForbidAsync(CookieAuthenticationDefaults.AuthenticationScheme); - }); + routeGroup.MapGet("/forbid", async context => + { + await context.ForbidAsync(CookieAuthenticationDefaults.AuthenticationScheme); + }); + } + + var apiRouteGroup = endpoints.MapGroup("/api").DisableCookieRedirect(); + AddChallengeAndForbidEndpoints(apiRouteGroup); + + // IAllowCookieRedirect always wins if present. Adding IDisableCookieRedirect before and afterwards does not override it. + var overriddenRouteGroup = apiRouteGroup.MapGroup("/jk").AllowCookieRedirect().DisableCookieRedirect(); + AddChallengeAndForbidEndpoints(overriddenRouteGroup); }); }) .ConfigureServices(services => @@ -1994,8 +2027,4 @@ private class Transaction public string ResponseText { get; set; } public XElement ResponseElement { get; set; } } - - private class TestApiEndpointMetadata : IApiEndpointMetadata - { - } } diff --git a/src/SignalR/common/Http.Connections/src/ConnectionEndpointRouteBuilderExtensions.cs b/src/SignalR/common/Http.Connections/src/ConnectionEndpointRouteBuilderExtensions.cs index f1aad8649e82..cd094cbf300e 100644 --- a/src/SignalR/common/Http.Connections/src/ConnectionEndpointRouteBuilderExtensions.cs +++ b/src/SignalR/common/Http.Connections/src/ConnectionEndpointRouteBuilderExtensions.cs @@ -127,8 +127,8 @@ public static ConnectionEndpointRouteBuilder MapConnections(this IEndpointRouteB e.Metadata.Add(data); } - // Add IApiEndpointMetadata to indicate this is a non-browser endpoint (SignalR) - e.Metadata.Add(ApiEndpointMetadata.Instance); + // Add IDisableCookieRedirectMetadata to indicate this is a non-browser endpoint (SignalR) + e.Metadata.Add(DisableCookieRedirectMetadata.Instance); }); return new ConnectionEndpointRouteBuilder(compositeConventionBuilder); @@ -160,8 +160,8 @@ public void Finally(Action finalConvention) } } - private sealed class ApiEndpointMetadata : IApiEndpointMetadata + private sealed class DisableCookieRedirectMetadata : IDisableCookieRedirectMetadata { - public static ApiEndpointMetadata Instance { get; } = new(); + public static DisableCookieRedirectMetadata Instance { get; } = new(); } }