File: StartupResponseCompression.cs
Web Access
Project: src\src\Servers\testassets\ServerComparison.TestSites\ServerComparison.TestSites.csproj (ServerComparison.TestSites)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
 
namespace ServerComparison.TestSites;
 
public class StartupResponseCompression
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddResponseCompression();
    }
 
    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        // NGinx's default min size is 20 bytes
        var helloWorldBody = "Hello World;" + new string('a', 20);
 
        app.Map("/NoAppCompression", subApp =>
        {
            subApp.Run(context =>
            {
                context.Response.ContentType = "text/plain";
                context.Response.ContentLength = helloWorldBody.Length;
                return context.Response.WriteAsync(helloWorldBody);
            });
        });
 
        app.Map("/AppCompression", subApp =>
        {
            subApp.UseResponseCompression();
            subApp.Run(context =>
            {
                context.Response.ContentType = "text/plain";
                context.Response.ContentLength = helloWorldBody.Length;
                return context.Response.WriteAsync(helloWorldBody);
            });
        });
        app.Run(context =>
        {
            context.Response.ContentType = "text/plain";
            string body;
            if (context.Request.Path.Value == "/")
            {
                body = "Running";
            }
            else
            {
                body = "Not Implemented: " + context.Request.Path;
            }
 
            context.Response.ContentLength = body.Length;
            return context.Response.WriteAsync(body);
        });
    }
}