Skip to content

Commit 88a45ce

Browse files
committed
Add MapActionEndpointConventionBuilder
1 parent a1fc3a6 commit 88a45ce

File tree

3 files changed

+39
-23
lines changed

3 files changed

+39
-23
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
using System;
5+
using System.Collections.Generic;
6+
7+
namespace Microsoft.AspNetCore.Builder
8+
{
9+
/// <summary>
10+
/// Builds conventions that will be used for customization of MapAction <see cref="EndpointBuilder"/> instances.
11+
/// </summary>
12+
public sealed class MapActionEndpointConventionBuilder : IEndpointConventionBuilder
13+
{
14+
private readonly List<IEndpointConventionBuilder> _endpointConventionBuilders;
15+
16+
internal MapActionEndpointConventionBuilder(List<IEndpointConventionBuilder> endpointConventionBuilders)
17+
{
18+
_endpointConventionBuilders = endpointConventionBuilders;
19+
}
20+
21+
/// <summary>
22+
/// Adds the specified convention to the builder. Conventions are used to customize <see cref="EndpointBuilder"/> instances.
23+
/// </summary>
24+
/// <param name="convention">The convention to add to the builder.</param>
25+
public void Add(Action<EndpointBuilder> convention)
26+
{
27+
foreach (var endpointConventionBuilder in _endpointConventionBuilders)
28+
{
29+
endpointConventionBuilder.Add(convention);
30+
}
31+
}
32+
}
33+
}

src/Http/Routing/src/Builder/MapActionEndpointRouteBuilderExtensions.cs

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public static class MapActionEndpointRouteBuilderExtensions
2020
/// </summary>
2121
/// <param name="endpoints">The <see cref="IEndpointRouteBuilder"/> to add the route to.</param>
2222
/// <param name="action">The delegate executed when the endpoint is matched.</param>
23-
/// <returns>A <see cref="IEndpointConventionBuilder"/> that can be used to further customize the endpoint.</returns>
24-
public static IEndpointConventionBuilder MapAction(
23+
/// <returns>An <see cref="IEndpointConventionBuilder"/> that can be used to further customize the endpoint.</returns>
24+
public static MapActionEndpointConventionBuilder MapAction(
2525
this IEndpointRouteBuilder endpoints,
2626
Delegate action)
2727
{
@@ -61,7 +61,6 @@ public static IEndpointConventionBuilder MapAction(
6161
endpointBuilder.Metadata.Add(attribute);
6262
}
6363

64-
6564
endpointBuilder.DisplayName = routeName ?? pattern;
6665

6766
((RouteEndpointBuilder)endpointBuilder).Order = routeOrder ?? defaultOrder;
@@ -75,25 +74,7 @@ public static IEndpointConventionBuilder MapAction(
7574
throw new InvalidOperationException("Action must have a pattern. Is it missing a Route attribute?");
7675
}
7776

78-
return new CompositeEndpointConventionBuilder(conventionBuilders);
79-
}
80-
81-
private class CompositeEndpointConventionBuilder : IEndpointConventionBuilder
82-
{
83-
private readonly List<IEndpointConventionBuilder> _endpointConventionBuilders;
84-
85-
public CompositeEndpointConventionBuilder(List<IEndpointConventionBuilder> endpointConventionBuilders)
86-
{
87-
_endpointConventionBuilders = endpointConventionBuilders;
88-
}
89-
90-
public void Add(Action<EndpointBuilder> convention)
91-
{
92-
foreach (var endpointConventionBuilder in _endpointConventionBuilders)
93-
{
94-
endpointConventionBuilder.Add(convention);
95-
}
96-
}
77+
return new MapActionEndpointConventionBuilder(conventionBuilders);
9778
}
9879
}
9980
}

src/Http/Routing/src/PublicAPI.Unshipped.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*REMOVED*Microsoft.AspNetCore.Routing.IRouteNameMetadata.RouteName.get -> string!
66
*REMOVED*Microsoft.AspNetCore.Routing.RouteNameMetadata.RouteName.get -> string!
77
*REMOVED*Microsoft.AspNetCore.Routing.RouteNameMetadata.RouteNameMetadata(string! routeName) -> void
8+
Microsoft.AspNetCore.Builder.MapActionEndpointConventionBuilder
9+
Microsoft.AspNetCore.Builder.MapActionEndpointConventionBuilder.Add(System.Action<Microsoft.AspNetCore.Builder.EndpointBuilder!>! convention) -> void
810
Microsoft.AspNetCore.Builder.MapActionEndpointRouteBuilderExtensions
911
Microsoft.AspNetCore.Routing.DataTokensMetadata.DataTokens.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object?>!
1012
Microsoft.AspNetCore.Routing.DataTokensMetadata.DataTokensMetadata(System.Collections.Generic.IReadOnlyDictionary<string!, object?>! dataTokens) -> void
@@ -16,4 +18,4 @@ Microsoft.AspNetCore.Routing.IRoutePatternMetadata
1618
Microsoft.AspNetCore.Routing.IRoutePatternMetadata.RoutePattern.get -> string?
1719
Microsoft.AspNetCore.Routing.RouteNameMetadata.RouteName.get -> string?
1820
Microsoft.AspNetCore.Routing.RouteNameMetadata.RouteNameMetadata(string? routeName) -> void
19-
static Microsoft.AspNetCore.Builder.MapActionEndpointRouteBuilderExtensions.MapAction(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, System.Delegate! action) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder!
21+
static Microsoft.AspNetCore.Builder.MapActionEndpointRouteBuilderExtensions.MapAction(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, System.Delegate! action) -> Microsoft.AspNetCore.Builder.MapActionEndpointConventionBuilder!

0 commit comments

Comments
 (0)