Skip to content

Commit

Permalink
Address PR feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
halter73 committed Mar 26, 2021
1 parent daa3ee5 commit ead0713
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 44 deletions.
6 changes: 3 additions & 3 deletions src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ static Microsoft.AspNetCore.Http.HeaderDictionaryTypeExtensions.AppendList<T>(th
static Microsoft.AspNetCore.Http.HeaderDictionaryTypeExtensions.GetTypedHeaders(this Microsoft.AspNetCore.Http.HttpRequest! request) -> Microsoft.AspNetCore.Http.Headers.RequestHeaders!
static Microsoft.AspNetCore.Http.HeaderDictionaryTypeExtensions.GetTypedHeaders(this Microsoft.AspNetCore.Http.HttpResponse! response) -> Microsoft.AspNetCore.Http.Headers.ResponseHeaders!
static Microsoft.AspNetCore.Http.HttpContextServerVariableExtensions.GetServerVariable(this Microsoft.AspNetCore.Http.HttpContext! context, string! variableName) -> string?
static Microsoft.AspNetCore.Http.RequestDelegateBuilder.BuildRequestDelegate(System.Delegate! action) -> Microsoft.AspNetCore.Http.RequestDelegate!
static Microsoft.AspNetCore.Http.RequestDelegateBuilder.BuildRequestDelegate(System.Reflection.MethodInfo! methodInfo) -> Microsoft.AspNetCore.Http.RequestDelegate!
static Microsoft.AspNetCore.Http.RequestDelegateBuilder.BuildRequestDelegate(System.Reflection.MethodInfo! methodInfo, System.Func<Microsoft.AspNetCore.Http.HttpContext!, object!>! targetFactory) -> Microsoft.AspNetCore.Http.RequestDelegate!
static Microsoft.AspNetCore.Http.RequestDelegateBuilder.Build(System.Delegate! action) -> Microsoft.AspNetCore.Http.RequestDelegate!
static Microsoft.AspNetCore.Http.RequestDelegateBuilder.Build(System.Reflection.MethodInfo! methodInfo) -> Microsoft.AspNetCore.Http.RequestDelegate!
static Microsoft.AspNetCore.Http.RequestDelegateBuilder.Build(System.Reflection.MethodInfo! methodInfo, System.Func<Microsoft.AspNetCore.Http.HttpContext!, object!>! targetFactory) -> Microsoft.AspNetCore.Http.RequestDelegate!
static Microsoft.AspNetCore.Http.ResponseExtensions.Clear(this Microsoft.AspNetCore.Http.HttpResponse! response) -> void
static Microsoft.AspNetCore.Http.ResponseExtensions.Redirect(this Microsoft.AspNetCore.Http.HttpResponse! response, string! location, bool permanent, bool preserveMethod) -> void
static Microsoft.AspNetCore.Http.SendFileResponseExtensions.SendFileAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, Microsoft.Extensions.FileProviders.IFileInfo! file, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task!
Expand Down
9 changes: 4 additions & 5 deletions src/Http/Http.Extensions/src/RequestDelegateBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public static class RequestDelegateBuilder
/// </summary>
/// <param name="action">A request handler with any number of custom parameters that often produces a response with its return value.</param>
/// <returns>The <see cref="RequestDelegate"/></returns>
public static RequestDelegate BuildRequestDelegate(Delegate action)
public static RequestDelegate Build(Delegate action)
{
if (action is null)
{
Expand All @@ -77,7 +77,7 @@ public static RequestDelegate BuildRequestDelegate(Delegate action)
/// </summary>
/// <param name="methodInfo">A static request handler with any number of custom parameters that often produces a response with its return value.</param>
/// <returns>The <see cref="RequestDelegate"/></returns>
public static RequestDelegate BuildRequestDelegate(MethodInfo methodInfo)
public static RequestDelegate Build(MethodInfo methodInfo)
{
if (methodInfo is null)
{
Expand All @@ -92,14 +92,13 @@ public static RequestDelegate BuildRequestDelegate(MethodInfo methodInfo)
};
}


/// <summary>
/// Builds a <see cref="RequestDelegate"/> implementation for <paramref name="methodInfo"/>.
/// </summary>
/// <param name="methodInfo">A request handler with any number of custom parameters that often produces a response with its return value.</param>
/// <param name="targetFactory">Creates the <see langword="this"/> for the non-static method. If the </param>
/// <param name="targetFactory">Creates the <see langword="this"/> for the non-static method.</param>
/// <returns>The <see cref="RequestDelegate"/></returns>
public static RequestDelegate BuildRequestDelegate(MethodInfo methodInfo, Func<HttpContext, object> targetFactory)
public static RequestDelegate Build(MethodInfo methodInfo, Func<HttpContext, object> targetFactory)
{
if (methodInfo is null)
{
Expand Down
70 changes: 35 additions & 35 deletions src/Http/Http.Extensions/test/RequestDelegateBuilderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public async Task RequestDelegateInvokesAction(Delegate @delegate)
{
var httpContext = new DefaultHttpContext();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand All @@ -106,7 +106,7 @@ public async Task StaticMethodInfoOverloadWorksWithBasicReflection()
BindingFlags.NonPublic | BindingFlags.Static,
new[] { typeof(HttpContext) });

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(methodInfo!);
var requestDelegate = RequestDelegateBuilder.Build(methodInfo!);

var httpContext = new DefaultHttpContext();

Expand Down Expand Up @@ -151,7 +151,7 @@ object GetTarget()
return new TestNonStaticActionClass(2);
}

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(methodInfo!, _ => GetTarget());
var requestDelegate = RequestDelegateBuilder.Build(methodInfo!, _ => GetTarget());

var httpContext = new DefaultHttpContext();

Expand All @@ -174,10 +174,10 @@ public void BuildRequestDelegateThrowsArgumentNullExceptions()
BindingFlags.NonPublic | BindingFlags.Static,
new[] { typeof(HttpContext) });

var exNullAction = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.BuildRequestDelegate(action: null!));
var exNullMethodInfo1 = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.BuildRequestDelegate(methodInfo: null!));
var exNullMethodInfo2 = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.BuildRequestDelegate(methodInfo: null!, _ => 0));
var exNullTargetFactory = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.BuildRequestDelegate(methodInfo!, targetFactory: null!));
var exNullAction = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.Build(action: null!));
var exNullMethodInfo1 = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.Build(methodInfo: null!));
var exNullMethodInfo2 = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.Build(methodInfo: null!, _ => 0));
var exNullTargetFactory = Assert.Throws<ArgumentNullException>(() => RequestDelegateBuilder.Build(methodInfo!, targetFactory: null!));

Assert.Equal("action", exNullAction.ParamName);
Assert.Equal("methodInfo", exNullMethodInfo1.ParamName);
Expand Down Expand Up @@ -229,7 +229,7 @@ public async Task RequestDelegatePopulatesFromRouteParameterBasedOnParameterName
var httpContext = new DefaultHttpContext();
httpContext.Request.RouteValues[paramName] = originalRouteParam.ToString(NumberFormatInfo.InvariantInfo);

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -272,7 +272,7 @@ public async Task RequestDelegatePopulatesFromRouteOptionalParameter(Delegate @d
{
var httpContext = new DefaultHttpContext();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand All @@ -290,7 +290,7 @@ public async Task RequestDelegatePopulatesFromRouteOptionalParameterBasedOnParam

httpContext.Request.RouteValues[paramName] = originalRouteParam.ToString(NumberFormatInfo.InvariantInfo);

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand All @@ -313,7 +313,7 @@ void TestAction([FromRoute(Name = specifiedName)] int foo)
var httpContext = new DefaultHttpContext();
httpContext.Request.RouteValues[specifiedName] = originalRouteParam.ToString(NumberFormatInfo.InvariantInfo);

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -336,7 +336,7 @@ void TestAction([FromRoute] int foo)
var httpContext = new DefaultHttpContext();
httpContext.Request.RouteValues[unmatchedName] = unmatchedRouteParam.ToString(NumberFormatInfo.InvariantInfo);

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -364,7 +364,7 @@ void TestAction([FromQuery] int value)
var httpContext = new DefaultHttpContext();
httpContext.Request.Query = query;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -387,7 +387,7 @@ void TestAction([FromHeader(Name = customHeaderName)] int value)
var httpContext = new DefaultHttpContext();
httpContext.Request.Headers[customHeaderName] = originalHeaderParam.ToString(NumberFormatInfo.InvariantInfo);

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -415,7 +415,7 @@ void TestAction([FromBody] Todo todo)
var requestBodyBytes = JsonSerializer.SerializeToUtf8Bytes(originalTodo);
httpContext.Request.Body = new MemoryStream(requestBodyBytes);

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<Todo>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<Todo>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -434,7 +434,7 @@ void TestAction([FromBody] Todo todo)
httpContext.Request.Headers["Content-Type"] = "application/json";
httpContext.Request.Headers["Content-Length"] = "0";

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<Todo>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<Todo>)TestAction);

await Assert.ThrowsAsync<JsonException>(() => requestDelegate(httpContext));
}
Expand All @@ -453,7 +453,7 @@ void TestAction([FromBody(AllowEmpty = true)] Todo todo)
httpContext.Request.Headers["Content-Type"] = "application/json";
httpContext.Request.Headers["Content-Length"] = "0";

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<Todo>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<Todo>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -477,7 +477,7 @@ void TestAction([FromBody(AllowEmpty = true)] BodyStruct bodyStruct)
httpContext.Request.Headers["Content-Type"] = "application/json";
httpContext.Request.Headers["Content-Length"] = "0";

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<BodyStruct>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<BodyStruct>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -507,7 +507,7 @@ void TestAction([FromBody] Todo todo)
httpContext.Features.Set<IHttpRequestLifetimeFeature>(new TestHttpRequestLifetimeFeature());
httpContext.RequestServices = serviceCollection.BuildServiceProvider();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<Todo>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<Todo>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -543,7 +543,7 @@ void TestAction([FromBody] Todo todo)
httpContext.Features.Set<IHttpRequestLifetimeFeature>(new TestHttpRequestLifetimeFeature());
httpContext.RequestServices = serviceCollection.BuildServiceProvider();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<Todo>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<Todo>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -578,7 +578,7 @@ void TestAction([FromForm] int value)
var httpContext = new DefaultHttpContext();
httpContext.Request.Form = form;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -608,7 +608,7 @@ void TestAction([FromForm] int value)
httpContext.Features.Set<IHttpRequestLifetimeFeature>(new TestHttpRequestLifetimeFeature());
httpContext.RequestServices = serviceCollection.BuildServiceProvider();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -644,7 +644,7 @@ void TestAction([FromForm] int value)
httpContext.Features.Set<IHttpRequestLifetimeFeature>(new TestHttpRequestLifetimeFeature());
httpContext.RequestServices = serviceCollection.BuildServiceProvider();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<int>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<int>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -664,16 +664,16 @@ public void BuildRequestDelegateThrowsInvalidOperationExceptionGivenBothFromBody
void TestAction([FromBody] int value1, [FromForm] int value2) { }
void TestActionWithFlippedParams([FromForm] int value1, [FromBody] int value2) { }

Assert.Throws<InvalidOperationException>(() => RequestDelegateBuilder.BuildRequestDelegate((Action<int, int>)TestAction));
Assert.Throws<InvalidOperationException>(() => RequestDelegateBuilder.BuildRequestDelegate((Action<int, int>)TestActionWithFlippedParams));
Assert.Throws<InvalidOperationException>(() => RequestDelegateBuilder.Build((Action<int, int>)TestAction));
Assert.Throws<InvalidOperationException>(() => RequestDelegateBuilder.Build((Action<int, int>)TestActionWithFlippedParams));
}

[Fact]
public void BuildRequestDelegateThrowsInvalidOperationExceptionGivenFromBodyOnMultipleParameters()
{
void TestAction([FromBody] int value1, [FromBody] int value2) { }

Assert.Throws<InvalidOperationException>(() => RequestDelegateBuilder.BuildRequestDelegate((Action<int, int>)TestAction));
Assert.Throws<InvalidOperationException>(() => RequestDelegateBuilder.Build((Action<int, int>)TestAction));
}

[Fact]
Expand All @@ -693,7 +693,7 @@ void TestAction([FromService] MyService myService)
var httpContext = new DefaultHttpContext();
httpContext.RequestServices = serviceCollection.BuildServiceProvider();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<MyService>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<MyService>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -712,7 +712,7 @@ void TestAction(HttpContext httpContext)

var httpContext = new DefaultHttpContext();

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<HttpContext>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<HttpContext>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -732,7 +732,7 @@ void TestAction(IFormCollection httpContext)
var httpContext = new DefaultHttpContext();
httpContext.Request.Headers["Content-Type"] = "application/x-www-form-urlencoded";

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<IFormCollection>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<IFormCollection>)TestAction);

await requestDelegate(httpContext);

Expand All @@ -755,7 +755,7 @@ void TestAction(CancellationToken cancellationToken)
RequestAborted = cts.Token
};

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate((Action<CancellationToken>)TestAction);
var requestDelegate = RequestDelegateBuilder.Build((Action<CancellationToken>)TestAction);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -799,7 +799,7 @@ public async Task RequestDelegateWritesComplexReturnValueAsJsonResponseBody(Dele
var responseBodyStream = new MemoryStream();
httpContext.Response.Body = responseBodyStream;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -848,7 +848,7 @@ public async Task RequestDelegateUsesCustomIResult(Delegate @delegate)
var responseBodyStream = new MemoryStream();
httpContext.Response.Body = responseBodyStream;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -891,7 +891,7 @@ public async Task RequestDelegateWritesStringReturnValueAsJsonResponseBody(Deleg
var responseBodyStream = new MemoryStream();
httpContext.Response.Body = responseBodyStream;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -932,7 +932,7 @@ public async Task RequestDelegateWritesIntReturnValue(Delegate @delegate)
var responseBodyStream = new MemoryStream();
httpContext.Response.Body = responseBodyStream;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand Down Expand Up @@ -973,7 +973,7 @@ public async Task RequestDelegateWritesBoolReturnValue(Delegate @delegate)
var responseBodyStream = new MemoryStream();
httpContext.Response.Body = responseBodyStream;

var requestDelegate = RequestDelegateBuilder.BuildRequestDelegate(@delegate);
var requestDelegate = RequestDelegateBuilder.Build(@delegate);

await requestDelegate(httpContext);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public static MapActionEndpointConventionBuilder Map(
const int defaultOrder = 0;

var builder = new RouteEndpointBuilder(
RequestDelegateBuilder.BuildRequestDelegate(action),
RequestDelegateBuilder.Build(action),
pattern,
defaultOrder)
{
Expand Down

0 comments on commit ead0713

Please sign in to comment.