示例#1
0
        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);
        }
示例#2
0
 public JancyExpressRoute GenerateRoute(JancyExpressRoutingConfiguration routingConfiguration, JancyExpressScopedRoutingConfiguration scopedRoutingConfiguration, JancyExpressGlobalRoutingConfiguration globalRoutingConfiguration)
 {
     return(new JancyExpressRoute
     {
         Verb = routingConfiguration.Verb.ToString(),
         Template = routingConfiguration.Template,
         Handler = GetHandlerFunc(routingConfiguration, scopedRoutingConfiguration, globalRoutingConfiguration)
     });
 }
示例#3
0
        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();
            });
        }
 public JancyExpressGlobalRouterConfiguration(JancyExpressGlobalRoutingConfiguration globalRoutingConfiguration)
 {
     GlobalRoutingConfiguration = globalRoutingConfiguration;
 }