@@ -9,26 +9,30 @@ namespace Futurum.WebApiEndpoint.Internal;
99
1010internal static class WebApiEndpointExecutorService
1111{
12- public static async Task ExecuteAsync ( HttpContext httpContext , MetadataDefinition ? metadataDefinition , string routePath , CancellationToken cancellationToken )
12+ public static Task ExecuteAsync ( HttpContext httpContext , MetadataDefinition ? metadataDefinition , string routePath , CancellationToken cancellationToken ) =>
13+ metadataDefinition != null
14+ ? WebApiEndpointAsync ( httpContext , metadataDefinition , routePath , cancellationToken )
15+ : WebApiEndpointNotFoundAsync ( httpContext , routePath , cancellationToken ) ;
16+
17+ private static async Task WebApiEndpointAsync ( HttpContext httpContext , MetadataDefinition metadataDefinition , string routePath , CancellationToken cancellationToken )
1318 {
1419 try
1520 {
16- if ( metadataDefinition != null )
17- await CallWebApiEndpointAsync ( httpContext , metadataDefinition , cancellationToken ) . UnwrapAsync ( ) ;
18- else
19- await WebApiEndpointNotFoundAsync ( httpContext , routePath , cancellationToken ) ;
21+ await CallWebApiEndpointAsync ( httpContext , metadataDefinition , cancellationToken ) . UnwrapAsync ( ) ;
2022 }
2123 catch ( Exception exception )
2224 {
23- var errorData = new IWebApiEndpointLogger . WebApiRouteErrorData ( routePath , httpContext . Request . Path , "Internal Server Error" , ( int ) HttpStatusCode . InternalServerError , exception . Message ) ;
25+ const HttpStatusCode internalServerError = HttpStatusCode . InternalServerError ;
26+
27+ string requestPath = httpContext . Request . Path ;
2428
2529 var webApiEndpointLogger = httpContext . RequestServices . GetService < IWebApiEndpointLogger > ( ) ;
26- webApiEndpointLogger . Error ( exception , errorData ) ;
30+ webApiEndpointLogger . ErrorUnhandled ( exception , routePath , requestPath , "Internal Server Error" , ( int ) internalServerError , exception . Message ) ;
2731
28- var errorResponse = HttpStatusCode . InternalServerError . ToResultError ( exception . ToResultError ( ) )
29- . ToProblemDetails ( ( int ) HttpStatusCode . InternalServerError , httpContext . Request . Path ) ;
32+ var errorResponse = internalServerError . ToResultError ( exception . ToResultError ( ) )
33+ . ToProblemDetails ( ( int ) internalServerError , requestPath ) ;
3034
31- httpContext . Response . StatusCode = ( int ) HttpStatusCode . InternalServerError ;
35+ httpContext . Response . StatusCode = ( int ) internalServerError ;
3236
3337 httpContext . Response . ContentType = WebApiEndpointContentType . ProblemJson ;
3438
@@ -38,22 +42,21 @@ public static async Task ExecuteAsync(HttpContext httpContext, MetadataDefinitio
3842
3943 private static Task < Result < IWebApiEndpointDispatcher > > CallWebApiEndpointAsync ( HttpContext httpContext , MetadataDefinition metadataDefinition , CancellationToken cancellationToken ) =>
4044 httpContext . RequestServices . TryGetService < IWebApiEndpointDispatcher > ( metadataDefinition . MetadataTypeDefinition . WebApiEndpointExecutorServiceType )
41- . ThenAsync ( webApiEndpointDispatcher => webApiEndpointDispatcher . ExecuteAsync ( metadataDefinition , httpContext , cancellationToken ) ) ;
45+ . ThenAsync ( webApiEndpointDispatcher => webApiEndpointDispatcher . ExecuteAsync ( metadataDefinition , httpContext , cancellationToken ) ) ;
4246
4347 private static Task WebApiEndpointNotFoundAsync ( HttpContext httpContext , string routePath , CancellationToken cancellationToken )
4448 {
45- var eventData = new IWebApiEndpointLogger . WebApiEndpointNotFoundData ( routePath , httpContext . Request . Method ) ;
49+ const HttpStatusCode failedStatusCode = HttpStatusCode . BadRequest ;
50+
51+ string requestPath = httpContext . Request . Path ;
4652
4753 var webApiEndpointLogger = httpContext . RequestServices . GetService < IWebApiEndpointLogger > ( ) ;
48- webApiEndpointLogger . Error ( eventData ) ;
54+ webApiEndpointLogger . ErrorWebApiEndpointNotFound ( routePath , httpContext . Request . Method ) ;
4955
50- var failedStatusCode = ( int ) HttpStatusCode . BadRequest ;
56+ var errorResponse = $ "WebApiEndpoint - Unable to find WebApiEndpoint for route : '{ routePath } '". ToResultError ( )
57+ . ToProblemDetails ( ( int ) failedStatusCode , requestPath ) ;
5158
52- var errorResponse = $ "WebApiEndpoint - Unable to find WebApiEndpoint for route : '{ routePath } '"
53- . ToResultError ( )
54- . ToProblemDetails ( failedStatusCode , httpContext . Request . Path ) ;
55-
56- httpContext . Response . StatusCode = failedStatusCode ;
59+ httpContext . Response . StatusCode = ( int ) failedStatusCode ;
5760
5861 httpContext . Response . ContentType = WebApiEndpointContentType . ProblemJson ;
5962
0 commit comments