From 530e66850e4744f5f0350ff3616fe1828772ce8d Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Tue, 30 Apr 2019 11:41:02 +0200 Subject: [PATCH] Hopefully improved the logging. --- .../Frontend/Middlewares/WebpackMiddleware.cs | 86 ++++--------------- src/Squidex/Config/Logging.cs | 2 +- src/Squidex/Config/Orleans/OrleansServices.cs | 5 ++ src/Squidex/Program.cs | 2 +- 4 files changed, 26 insertions(+), 69 deletions(-) diff --git a/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs b/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs index 2dc98b9bb..e6731f739 100644 --- a/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs +++ b/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs @@ -5,9 +5,7 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using System; -using System.IO; -using System.Text; +using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; @@ -15,10 +13,7 @@ namespace Squidex.Areas.Frontend.Middlewares { public sealed class WebpackMiddleware { - private const string Host = "localhost"; - private const string Port = "3000"; - private static readonly string[] Scripts = { "shims", "app" }; - private static readonly string[] Styles = Array.Empty(); + private const string WebpackUrl = "http://localhost:3000/index.html"; private readonly RequestDelegate next; public WebpackMiddleware(RequestDelegate next) @@ -30,34 +25,29 @@ namespace Squidex.Areas.Frontend.Middlewares { if (context.IsHtmlPath()) { - var responseBuffer = new MemoryStream(); - var responseBody = context.Response.Body; - - context.Response.Body = responseBuffer; - - await next(context); + if (context.Response.StatusCode != 304) + { + using (var client = new HttpClient()) + { + var result = await client.GetAsync(WebpackUrl); - context.Response.Body = responseBody; + context.Response.StatusCode = (int)result.StatusCode; - var response = Encoding.UTF8.GetString(responseBuffer.ToArray()); + if (result.IsSuccessStatusCode) + { + var html = await result.Content.ReadAsStringAsync(); - if (context.IsIndex()) - { - response = InjectStyles(response); - response = InjectScripts(response); - } + var basePath = context.Request.PathBase; - var basePath = context.Request.PathBase; + if (basePath.HasValue) + { + html = AdjustBase(html, basePath.Value); + } - if (basePath.HasValue) - { - response = AdjustBase(response, basePath.Value); + await context.Response.WriteHtmlAsync(html); + } + } } - - context.Response.ContentLength = Encoding.UTF8.GetByteCount(response); - context.Response.Body = responseBody; - - await context.Response.WriteAsync(response); } else { @@ -65,44 +55,6 @@ namespace Squidex.Areas.Frontend.Middlewares } } - private static string InjectStyles(string response) - { - if (!response.Contains("")) - { - return response; - } - - var sb = new StringBuilder(); - - foreach (var file in Styles) - { - sb.AppendLine($""); - } - - response = response.Replace("", $"{sb}"); - - return response; - } - - private static string InjectScripts(string response) - { - if (!response.Contains("")) - { - return response; - } - - var sb = new StringBuilder(); - - foreach (var file in Scripts) - { - sb.AppendLine($""); - } - - response = response.Replace("", $"{sb}"); - - return response; - } - private static string AdjustBase(string response, string baseUrl) { return response.Replace("", $""); diff --git a/src/Squidex/Config/Logging.cs b/src/Squidex/Config/Logging.cs index 76a2b22ea..42e3a0ecc 100644 --- a/src/Squidex/Config/Logging.cs +++ b/src/Squidex/Config/Logging.cs @@ -14,7 +14,7 @@ namespace Squidex.Config { public static class Logging { - public static void AddFilter(this ILoggingBuilder builder) + public static void AddFilters(this ILoggingBuilder builder) { builder.AddFilter((category, level) => { diff --git a/src/Squidex/Config/Orleans/OrleansServices.cs b/src/Squidex/Config/Orleans/OrleansServices.cs index 458dc225a..248f98580 100644 --- a/src/Squidex/Config/Orleans/OrleansServices.cs +++ b/src/Squidex/Config/Orleans/OrleansServices.cs @@ -28,6 +28,11 @@ namespace Squidex.Config.Orleans { services.AddOrleans(config, environment, builder => { + builder.ConfigureLogging(logging => + { + logging.AddFilters(); + }); + builder.ConfigureServices(siloServices => { siloServices.AddSingleton(); diff --git a/src/Squidex/Program.cs b/src/Squidex/Program.cs index e427eff3d..dd6f6abd7 100644 --- a/src/Squidex/Program.cs +++ b/src/Squidex/Program.cs @@ -31,7 +31,7 @@ namespace Squidex { builder.AddConfiguration(hostingContext.Configuration.GetSection("logging")); builder.AddSemanticLog(); - builder.AddFilter(); + builder.AddFilters(); }) .ConfigureAppConfiguration((hostContext, builder) => {