private JancyExpressRoute GenerateRoute(JancyExpressRoutingConfiguration routingConfiguration, JancyExpressScopedRoutingConfiguration scopedRoutingConfiguration, JancyExpressGlobalRouterConfiguration globalRouterConfiguration) { var routeGenerator = GetRouteGenerator(routingConfiguration.HttpHandlerType); return(routeGenerator.GenerateRoute(routingConfiguration, scopedRoutingConfiguration, globalRouterConfiguration.GlobalRoutingConfiguration)); }
private Func <HttpRequest, HttpResponse, RouteData, Task> GetHandlerFunc(JancyExpressRoutingConfiguration routingConfiguration, JancyExpressScopedRoutingConfiguration scopedRoutingConfiguration, JancyExpressGlobalRoutingConfiguration globalRoutingConfiguration) { return((request, response, routeData) => { var serviceProvider = request.HttpContext.RequestServices; var httpHandler = GetHttpHandler(routingConfiguration, scopedRoutingConfiguration, globalRoutingConfiguration, serviceProvider, request, response, routeData); return httpHandler(); }); }
private HttpHandlerDelegate GetHttpHandler(JancyExpressRoutingConfiguration routingConfiguration, JancyExpressScopedRoutingConfiguration scopedRoutingConfiguration, JancyExpressGlobalRoutingConfiguration globalRoutingConfiguration, IServiceProvider serviceProvider, HttpRequest request, HttpResponse response, RouteData routeData) { HttpHandlerDelegate httpHandler = () => { var handler = serviceProvider.GetService <IHttpHandler>(routingConfiguration.HttpHandlerType); return(handler.Handle(request, response, routeData)); }; var httpHandlerMiddlewares = GetHttpHandlerMiddlewares(routingConfiguration.HttpHandlerMiddlewareTypes, serviceProvider) .Concat(GetHttpHandlerMiddlewares(scopedRoutingConfiguration.HttpHandlerMiddlewareTypes, serviceProvider)) .Concat(GetHttpHandlerMiddlewares(globalRoutingConfiguration.HttpHandlerMiddlewareTypes, serviceProvider)); foreach (var middleware in httpHandlerMiddlewares) { var previous = httpHandler; httpHandler = () => middleware.Handle(request, response, routeData, previous); } return(httpHandler); }
public JancyExpressRoute GenerateRoute(JancyExpressRoutingConfiguration routingConfiguration, JancyExpressScopedRoutingConfiguration scopedRoutingConfiguration, JancyExpressGlobalRoutingConfiguration globalRoutingConfiguration) { return(new JancyExpressRoute { Verb = routingConfiguration.Verb.ToString(), Template = routingConfiguration.Template, Handler = GetHandlerFunc(routingConfiguration, scopedRoutingConfiguration, globalRoutingConfiguration) }); }