Browse Source

Update server version and set server header to 'TFB' (#6305)

Andreas Nägeli 4 years ago
parent
commit
203629cbb9

+ 4 - 4
frameworks/CSharp/genhttp/Benchmarks/Benchmarks.csproj

@@ -26,10 +26,10 @@
   </ItemGroup>
   </ItemGroup>
     
     
   <ItemGroup>
   <ItemGroup>
-    <PackageReference Include="GenHTTP.Core" Version="5.1.1" />
-    <PackageReference Include="GenHTTP.Modules.Razor" Version="5.1.0" />
-    <PackageReference Include="GenHTTP.Modules.Webservices" Version="5.1.0" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.1" />
+    <PackageReference Include="GenHTTP.Core" Version="5.2.0" />
+    <PackageReference Include="GenHTTP.Modules.Razor" Version="5.2.0" />
+    <PackageReference Include="GenHTTP.Modules.Webservices" Version="5.2.0" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.2" />
     <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.1" />
     <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="5.0.1" />
   </ItemGroup>
   </ItemGroup>
   
   

+ 3 - 1
frameworks/CSharp/genhttp/Benchmarks/Program.cs

@@ -5,6 +5,7 @@ using GenHTTP.Modules.Layouting;
 using GenHTTP.Modules.Webservices;
 using GenHTTP.Modules.Webservices;
 
 
 using Benchmarks.Tests;
 using Benchmarks.Tests;
+using Benchmarks.Utilities;
 
 
 namespace Benchmarks
 namespace Benchmarks
 {
 {
@@ -21,7 +22,8 @@ namespace Benchmarks
                               .AddService<DbResource>("db")
                               .AddService<DbResource>("db")
                               .AddService<QueryResource>("queries")
                               .AddService<QueryResource>("queries")
                               .AddService<UpdateResource>("updates")
                               .AddService<UpdateResource>("updates")
-                              .AddService<CacheResource>("cached-worlds");
+                              .AddService<CacheResource>("cached-worlds")
+                              .Add(ServerHeader.Create());
 
 
             return Host.Create()
             return Host.Create()
                        .Handler(tests)
                        .Handler(tests)

+ 2 - 1
frameworks/CSharp/genhttp/Benchmarks/Tests/FortuneHandler.cs

@@ -49,6 +49,7 @@ namespace Benchmarks.Tests
 
 
     public class FortuneHandler : IHandler, IPageRenderer
     public class FortuneHandler : IHandler, IPageRenderer
     {
     {
+        private static readonly FlexibleContentType CONTENT_TYPE = new FlexibleContentType("text/html; charset=utf-8");
 
 
         #region Get-/Setters
         #region Get-/Setters
 
 
@@ -87,7 +88,7 @@ namespace Benchmarks.Tests
         {
         {
             return model.Request.Respond()
             return model.Request.Respond()
                                 .Content(await Template.RenderAsync(model))
                                 .Content(await Template.RenderAsync(model))
-                                .Header("Content-Type", "text/html; charset=utf-8");
+                                .Type(CONTENT_TYPE);
         }
         }
 
 
         private async ValueTask<FortuneModel> GetFortunes(IRequest request, IHandler handler)
         private async ValueTask<FortuneModel> GetFortunes(IRequest request, IHandler handler)

+ 11 - 0
frameworks/CSharp/genhttp/Benchmarks/Utilities/ServerHeader.cs

@@ -0,0 +1,11 @@
+namespace Benchmarks.Utilities
+{
+
+    public static class ServerHeader
+    {
+
+        public static ServerHeaderConcernBuilder Create() => new ServerHeaderConcernBuilder();
+
+    }
+
+}

+ 54 - 0
frameworks/CSharp/genhttp/Benchmarks/Utilities/ServerHeaderConcern.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+using GenHTTP.Api.Content;
+using GenHTTP.Api.Protocol;
+
+namespace Benchmarks.Utilities
+{
+
+    public sealed class ServerHeaderConcern : IConcern
+    {
+
+        #region Get-/Setters
+
+        public IHandler Content { get; }
+
+        public IHandler Parent { get; }
+
+        #endregion
+
+        #region Initialization
+
+        public ServerHeaderConcern(IHandler parent, Func<IHandler, IHandler> contentFactory)
+        {
+            Parent = parent;
+            Content = contentFactory(this);
+        }
+
+        #endregion
+
+        #region Functionality
+
+        public IEnumerable<ContentElement> GetContent(IRequest request) => Content.GetContent(request);
+
+        public ValueTask PrepareAsync() => Content.PrepareAsync();
+
+        public async ValueTask<IResponse> HandleAsync(IRequest request)
+        {
+            var response = await Content.HandleAsync(request);
+
+            if (response != null)
+            {
+                response.Headers.Add("Server", "TFB");
+            }
+
+            return response;
+        }
+
+        #endregion
+
+    }
+
+}

+ 18 - 0
frameworks/CSharp/genhttp/Benchmarks/Utilities/ServerHeaderConcernBuilder.cs

@@ -0,0 +1,18 @@
+using System;
+
+using GenHTTP.Api.Content;
+
+namespace Benchmarks.Utilities
+{
+
+    public sealed class ServerHeaderConcernBuilder : IConcernBuilder
+    {
+
+        public IConcern Build(IHandler parent, Func<IHandler, IHandler> contentFactory)
+        {
+            return new ServerHeaderConcern(parent, contentFactory);
+        }
+
+    }
+
+}