< Summary - Kestrun — Combined Coverage

Information
Class: Kestrun.Hosting.Compression.KestrunResponseCompressionProvider
Assembly: Kestrun
File(s): /home/runner/work/Kestrun/Kestrun/src/CSharp/Kestrun/Hosting/Compression/KestrunResponseCompressionProvider.cs
Tag: Kestrun/Kestrun@2d87023b37eb91155071c91dd3d6a2eeb3004705
Line coverage
100%
Covered lines: 8
Uncovered lines: 0
Coverable lines: 8
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 10/13/2025 - 16:52:37 Line coverage: 100% (8/8) Branch coverage: 100% (8/8) Total lines: 48 Tag: Kestrun/Kestrun@10d476bee71c71ad215bb8ab59f219887b5b4a5e 10/13/2025 - 16:52:37 Line coverage: 100% (8/8) Branch coverage: 100% (8/8) Total lines: 48 Tag: Kestrun/Kestrun@10d476bee71c71ad215bb8ab59f219887b5b4a5e

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
DisabledFor(...)100%22100%
CheckRequestAcceptsCompression(...)100%22100%
GetCompressionProvider(...)100%22100%
ShouldCompressResponse(...)100%22100%

File(s)

/home/runner/work/Kestrun/Kestrun/src/CSharp/Kestrun/Hosting/Compression/KestrunResponseCompressionProvider.cs

#LineLine coverage
 1using Kestrun.TBuilder;
 2using Microsoft.AspNetCore.ResponseCompression;
 3using Microsoft.Extensions.Options;
 4
 5namespace Kestrun.Hosting.Compression;
 6
 7/// <summary>
 8/// A response compression provider that respects endpoint metadata to disable compression.
 9/// Wraps the built-in <see cref="ResponseCompressionProvider"/>.
 10/// </summary>
 11/// <remarks>
 12/// Creates a new <see cref="KestrunResponseCompressionProvider"/>.
 13/// </remarks>
 14/// <param name="services">The service provider.</param>
 15/// <param name="options">The response compression options.</param>
 316public sealed class KestrunResponseCompressionProvider(
 317    IServiceProvider services,
 318    IOptions<ResponseCompressionOptions> options) : IResponseCompressionProvider
 19{
 320    private readonly ResponseCompressionProvider _inner = ActivatorUtilities.CreateInstance<ResponseCompressionProvider>
 21
 22    private static bool DisabledFor(HttpContext ctx) =>
 623        ctx.GetEndpoint()?.Metadata.Contains(EndpointDisablingCompressionExtensions.DisableResponseCompressionKey) == tr
 24
 25    /// <summary>
 26    /// Determines if the request accepts compression, taking into account endpoint metadata.
 27    /// </summary>
 28    /// <param name="context">The HTTP context.</param>
 29    /// <returns>True if the request accepts compression; otherwise, false.</returns>
 30    public bool CheckRequestAcceptsCompression(HttpContext context)
 231        => !DisabledFor(context) && _inner.CheckRequestAcceptsCompression(context);
 32
 33    /// <summary>
 34    /// Gets the compression provider for the given HTTP context, taking into account endpoint metadata.
 35    /// </summary>
 36    /// <param name="context">The HTTP context.</param>
 37    /// <returns>The compression provider, or null if compression is disabled.</returns>
 38    public ICompressionProvider? GetCompressionProvider(HttpContext context)
 239        => !DisabledFor(context) ? _inner.GetCompressionProvider(context) : null;
 40
 41    /// <summary>
 42    /// Determines if the response should be compressed, taking into account endpoint metadata.
 43    /// </summary>
 44    /// <param name="context">The HTTP context.</param>
 45    /// <returns>True if the response should be compressed; otherwise, false.</returns>
 46    public bool ShouldCompressResponse(HttpContext context)
 247        => !DisabledFor(context) && _inner.ShouldCompressResponse(context);
 48}