public static MidFunc UsePugTraceDashboard( DashboardOptions options, TraceStorage storage, RouteCollection routes) { if (options == null) throw new ArgumentNullException("options"); if (routes == null) throw new ArgumentNullException("routes"); return next => env => { var context = new OwinContext(env); var dispatcher = routes.FindDispatcher(context.Request.Path.Value); if (dispatcher == null) { return next(env); } if (options.AuthorizationFilters.Any(filter => !filter.Authorize(context.Environment))) { context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; return Task.FromResult(false); } var dispatcherContext = new RequestDispatcherContext( options.AppPath, storage, context.Environment, dispatcher.Item2); return dispatcher.Item1.Dispatch(dispatcherContext); }; }
static DashboardRoutes() { Routes = new RouteCollection(); Routes.AddRazorPage("/", x => new HomePage()); Routes.AddRazorPage("/traces/(?<TraceId>\\d+)", x => { using (var connection = TraceStorage.Current.GetConnection()) { var traceId = int.Parse(x.Groups["TraceId"].Value); var model = connection.GetTraceDetail(traceId); return new TraceDetailsPage { Model = model }; } }); #region Embedded static content Routes.Add("/img/logo", new EmbeddedResourceDispatcher( "image/png", typeof(DashboardRoutes).Assembly, GetContentResourceName("img", "pugtrace.png"))); Routes.Add("/js", new CombinedResourceDispatcher( "application/javascript", typeof(DashboardRoutes).Assembly, GetContentFolderNamespace("js"), Javascripts)); Routes.Add("/css", new CombinedResourceDispatcher( "text/css", typeof(DashboardRoutes).Assembly, GetContentFolderNamespace("css"), Stylesheets)); Routes.Add("/fonts/glyphicons-halflings-regular/eot", new EmbeddedResourceDispatcher( "application/vnd.ms-fontobject", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.eot"))); Routes.Add("/fonts/glyphicons-halflings-regular/svg", new EmbeddedResourceDispatcher( "image/svg+xml", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.svg"))); Routes.Add("/fonts/glyphicons-halflings-regular/ttf", new EmbeddedResourceDispatcher( "application/octet-stream", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.ttf"))); Routes.Add("/fonts/glyphicons-halflings-regular/woff", new EmbeddedResourceDispatcher( "application/font-woff", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.woff"))); Routes.Add("/fonts/glyphicons-halflings-regular/woff2", new EmbeddedResourceDispatcher( "application/font-woff2", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.woff2"))); #endregion }
static DashboardRoutes() { Routes = new RouteCollection(); Routes.AddRazorPage("/", x => new HomePage()); Routes.AddRazorPage("/cleanup", x => new Cleanup()); #region Embedded static content Routes.Add("/img/logo", new EmbeddedResourceDispatcher( "image/png", typeof(DashboardRoutes).Assembly, GetContentResourceName("img", "pugtrace.png"))); Routes.Add("/js", new CombinedResourceDispatcher( "application/javascript", typeof(DashboardRoutes).Assembly, GetContentFolderNamespace("js"), Javascripts)); Routes.Add("/css", new CombinedResourceDispatcher( "text/css", typeof(DashboardRoutes).Assembly, GetContentFolderNamespace("css"), Stylesheets)); Routes.Add("/fonts/glyphicons-halflings-regular/eot", new EmbeddedResourceDispatcher( "application/vnd.ms-fontobject", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.eot"))); Routes.Add("/fonts/glyphicons-halflings-regular/svg", new EmbeddedResourceDispatcher( "image/svg+xml", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.svg"))); Routes.Add("/fonts/glyphicons-halflings-regular/ttf", new EmbeddedResourceDispatcher( "application/octet-stream", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.ttf"))); Routes.Add("/fonts/glyphicons-halflings-regular/woff", new EmbeddedResourceDispatcher( "application/font-woff", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.woff"))); Routes.Add("/fonts/glyphicons-halflings-regular/woff2", new EmbeddedResourceDispatcher( "application/font-woff2", typeof(DashboardRoutes).Assembly, GetContentResourceName("fonts", "glyphicons-halflings-regular.woff2"))); #endregion }
public static BuildFunc UsePugTraceDashboard( this BuildFunc builder, DashboardOptions options, TraceStorage storage, RouteCollection routes) { if (builder == null) throw new ArgumentNullException("builder"); if (options == null) throw new ArgumentNullException("options"); if (routes == null) throw new ArgumentNullException("routes"); builder(_ => UsePugTraceDashboard(options, storage, routes)); return builder; }