public async Task Invoke(IDictionary<string, object> environment) { var path = environment["owin.RequestPath"].ToString(); var method = environment["owin.RequestMethod"].ToString(); var routeData = new OwinRouteData { Environment = environment, Config = engine.Config }; var walker = this.engine.Walker(); var data = walker.WalkRoute(path, method, routeData); environment["superscribe.RouteData"] = data; environment["route.Parameters"] = routeData.Parameters; environment[Constants.SuperscribeRouteWalkerEnvironmentKey] = walker; environment[Constants.SuperscribeRouteDataProviderEnvironmentKey] = new OwinRouteDataProvider(data); if (routeData.Pipeline.Any()) { IAppBuilder branch = this.builder.New(); foreach (var middleware in routeData.Pipeline) { var func = middleware.Obj as Func<IAppBuilder, IAppBuilder>; if (func != null) { branch = func(branch); } else { branch.Use(middleware.Obj, middleware.Args); } } branch.Use(typeof(RedirectMiddleware), this.next); var continuation = (Func<IDictionary<string, object>, Task>)branch.Build(typeof(Func<IDictionary<string, object>, Task>)); await continuation(environment); } else { await this.next(environment); } }
public async Task Invoke(IDictionary<string, object> environment) { var path = environment["owin.RequestPath"].ToString(); var method = environment["owin.RequestMethod"].ToString(); var routeData = new OwinRouteData { Environment = environment, Config = engine.Config }; if (environment.ContainsKey("Microsoft.Owin.Query#dictionary")) { var queryParams = environment["Microsoft.Owin.Query#dictionary"] as IDictionary<string, string[]>; if (queryParams != null) { foreach (var key in queryParams.Keys) { if (routeData.QueryParameters.ContainsKey(key)) { continue; } var value = queryParams[key]; if (value.Length <= 1) { routeData.QueryParameters[key] = value.FirstOrDefault(); continue; } routeData.QueryParameters[key] = value; } } } var walker = this.engine.Walker(); var data = walker.WalkRoute(path, method, routeData); environment["superscribe.RouteData"] = data; environment["route.Parameters"] = routeData.Parameters; environment[Constants.SuperscribeRouteWalkerEnvironmentKey] = walker; environment[Constants.SuperscribeRouteDataProviderEnvironmentKey] = new OwinRouteDataProvider(data); if (routeData.Pipeline.Any()) { IAppBuilder branch = this.builder.New(); foreach (var middleware in routeData.Pipeline) { var func = middleware.Obj as Func<IAppBuilder, IAppBuilder>; if (func != null) { branch = func(branch); } else { branch.Use(middleware.Obj, middleware.Args); } } branch.Use(typeof(RedirectMiddleware), this.next); var continuation = (Func<IDictionary<string, object>, Task>)branch.Build(typeof(Func<IDictionary<string, object>, Task>)); await continuation(environment); } else { await this.next(environment); } }
public async Task Invoke(IDictionary<string, object> environment) { var headers = (IDictionary<string, string[]>)environment["owin.RequestHeaders"]; var path = environment["owin.RequestPath"].ToString(); var method = environment["owin.RequestMethod"].ToString(); string[] accepts; string[] contentType; headers.TryGetValue("accepts", out accepts); headers.TryGetValue("content-type", out contentType); var parts = path.Split('?'); if (parts.Length > 0) { path = parts[0]; } var querystring = string.Empty; if (parts.Length > 1) { querystring = parts[1]; } environment[Constants.RequestPathEnvironmentKey] = path; environment[Constants.RequestQuerystringEnvironmentKey] = querystring; environment[Constants.RequestMethodEnvironmentKey] = method; environment[Constants.AcceptsEnvironmentKey] = accepts; environment[Constants.ContentTypeEnvironmentKey] = contentType; var routeData = new OwinRouteData { Environment = environment, Config = this.engine.Config }; var walker = this.engine.Walker(); var data = walker.WalkRoute(environment, routeData); environment["superscribe.RouteData"] = data; environment["route.Parameters"] = routeData.Parameters; environment[Constants.SuperscribeRouteWalkerEnvironmentKey] = walker; environment[Constants.SuperscribeRouteDataProviderEnvironmentKey] = new OwinRouteDataProvider(data); if (routeData.Pipeline.Any()) { var branch = this.builder.New(); foreach (var middleware in routeData.Pipeline) { var func = middleware.Obj as Func<IAppBuilder, IAppBuilder>; if (func != null) { branch = func(branch); } else { branch.Use(middleware.Obj, middleware.Args); } } branch.Use(typeof(RedirectMiddleware), this.next); var continuation = (Func<IDictionary<string, object>, Task>)branch.Build(typeof(Func<IDictionary<string, object>, Task>)); await continuation(environment); } else { await this.next(environment); } }
public async Task Invoke(IDictionary <string, object> environment) { var headers = (IDictionary <string, string[]>)environment["owin.RequestHeaders"]; var path = environment["owin.RequestPath"].ToString(); var method = environment["owin.RequestMethod"].ToString(); string[] accepts; string[] contentType; headers.TryGetValue("accepts", out accepts); headers.TryGetValue("content-type", out contentType); var parts = path.Split('?'); if (parts.Length > 0) { path = parts[0]; } var querystring = string.Empty; if (parts.Length > 1) { querystring = parts[1]; } environment[Constants.RequestPathEnvironmentKey] = path; environment[Constants.RequestQuerystringEnvironmentKey] = querystring; environment[Constants.RequestMethodEnvironmentKey] = method; environment[Constants.AcceptsEnvironmentKey] = accepts; environment[Constants.ContentTypeEnvironmentKey] = contentType; var routeData = new OwinRouteData { Environment = environment, Config = this.engine.Config }; var walker = this.engine.Walker(); var data = walker.WalkRoute(environment, routeData); environment["superscribe.RouteData"] = data; environment["route.Parameters"] = routeData.Parameters; environment[Constants.SuperscribeRouteWalkerEnvironmentKey] = walker; environment[Constants.SuperscribeRouteDataProviderEnvironmentKey] = new OwinRouteDataProvider(data); if (routeData.Pipeline.Any()) { var branch = this.builder.New(); foreach (var middleware in routeData.Pipeline) { var func = middleware.Obj as Func <IAppBuilder, IAppBuilder>; if (func != null) { branch = func(branch); } else { branch.Use(middleware.Obj, middleware.Args); } } branch.Use(typeof(RedirectMiddleware), this.next); var continuation = (Func <IDictionary <string, object>, Task>)branch.Build(typeof(Func <IDictionary <string, object>, Task>)); await continuation(environment); } else { await this.next(environment); } }