public MainHub(DockerService dockerService) { _dockerService = dockerService; }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime, DockerService dockerService) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } // SignalR hack: get token from QueryString and create Authorization header app.Use(async(context, next) => { if (string.IsNullOrWhiteSpace(context.Request.Headers["Authorization"])) { if (context.Request.QueryString.HasValue) { var token = context.Request.QueryString.Value .Split('&') .SingleOrDefault(x => x.Contains("authorization"))?.Split('=')[1]; if (!string.IsNullOrWhiteSpace(token)) { context.Request.Headers.Add("Authorization", new[] { $"Bearer {token}" }); } } } await next.Invoke(); }); app.UseStaticFiles(); app.UseWebSockets(); app.UseMetrics(); app.UseMetricsReporting(lifetime); app.UseSignalR(); ConfigureAuth(app); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute( "DeepLink", "{*pathInfo}", defaults: new { controller = "Home", action = "Index" }); }); dockerService.MonitorEvents(); }