< Summary - Kestrun — Combined Coverage

Information
Class: Public.Middleware.Add-KrCompressionMiddleware
Assembly: Kestrun.PowerShell.Public
File(s): /home/runner/work/Kestrun/Kestrun/src/PowerShell/Kestrun/Public/Middleware/Add-KrCompressionMiddleware.ps1
Tag: Kestrun/Kestrun@6135d944f8787fb570e4dfbacac6e80312799a86
Line coverage
0%
Covered lines: 0
Uncovered lines: 18
Coverable lines: 18
Total lines: 80
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 12/01/2025 - 20:55:19 Line coverage: 0% (0/20) Total lines: 93 Tag: Kestrun/Kestrun@638a27c2dd54103f693f023b6ba5f56a884caafa05/09/2026 - 21:51:36 Line coverage: 0% (0/18) Total lines: 80 Tag: Kestrun/Kestrun@6b24c7512a1bad61723a28d32446de0aa658293e

Coverage delta

Coverage delta 1 -1

Metrics

File(s)

/home/runner/work/Kestrun/Kestrun/src/PowerShell/Kestrun/Public/Middleware/Add-KrCompressionMiddleware.ps1

#LineLine coverage
 1<#
 2    .SYNOPSIS
 3        Adds response compression to the server.
 4    .DESCRIPTION
 5        This cmdlet allows you to configure response compression for the Kestrun server.
 6        It can be used to compress responses using various algorithms like Gzip, Brotli, etc.
 7    .PARAMETER Options
 8        The ResponseCompressionOptions to configure the response compression.
 9    .PARAMETER EnableForHttps
 10        If specified, enables response compression for HTTPS requests.
 11    .PARAMETER MimeTypes
 12        An array of MIME types to compress. If not specified, defaults to common text-based MIME types.
 13    .PARAMETER ExcludedMimeTypes
 14        An array of MIME types to exclude from compression.
 15    .PARAMETER DisableGzip
 16        If specified, disables Gzip compression.
 17    .PARAMETER DisableBrotli
 18        If specified, disables Brotli compression.
 19    .EXAMPLE
 20        Add-KrCompressionMiddleware -EnableForHttps -MimeTypes 'text/plain', 'application/json' -ExcludedMimeTypes 'imag
 21        This example adds response compression to the server, enabling it for HTTPS requests, and specifying the MIME ty
 22    .EXAMPLE
 23        Add-KrCompressionMiddleware -Options $options
 24        This example adds response compression to the server using the specified ResponseCompressionOptions.
 25    .LINK
 26        https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.responsecompression.responsecompressionoptions
 27    .NOTES
 28        This cmdlet is used to configure response compression for the Kestrun server, allowing you to specify which MIME
 29        Providers is not supported yet.
 30#>
 31function Add-KrCompressionMiddleware {
 32    [KestrunRuntimeApi('Definition')]
 33    [CmdletBinding(defaultParameterSetName = 'Items')]
 34    param(
 35        [Parameter(Mandatory = $true, ParameterSetName = 'Options')]
 36        [Microsoft.AspNetCore.ResponseCompression.ResponseCompressionOptions]$Options,
 37
 38        [Parameter(ParameterSetName = 'Items')]
 39        [switch]$EnableForHttps,
 40
 41        [Parameter(ParameterSetName = 'Items')]
 42        [string[]]$MimeTypes,
 43
 44        [Parameter(ParameterSetName = 'Items')]
 45        [string[]]$ExcludedMimeTypes,
 46
 47        [Parameter(ParameterSetName = 'Items')]
 48        [switch]$DisableGzip,
 49
 50        [Parameter(ParameterSetName = 'Items')]
 51        [switch]$DisableBrotli
 52    )
 53    # Ensure the server instance is resolved
 054    $Server = Resolve-KestrunServer
 055    if ($PSCmdlet.ParameterSetName -eq 'Items') {
 056        $Options = [Microsoft.AspNetCore.ResponseCompression.ResponseCompressionOptions]::new()
 057        if ($null -ne $MimeTypes -and $MimeTypes.Count -gt 0) {
 058            $Options.MimeTypes = $MimeTypes
 59        }
 060        if ($null -ne $ExcludedMimeTypes -and $ExcludedMimeTypes.Count -gt 0) {
 061            $Options.ExcludedMimeTypes = $ExcludedMimeTypes
 62        }
 063        if ($EnableForHttps.IsPresent) {
 064            $Options.EnableForHttps = $true
 65        }
 066        if (-not $DisableGzip.IsPresent) {
 067            $gzipCompressionProviderOptions = [Microsoft.AspNetCore.ResponseCompression.GzipCompressionProviderOptions]:
 068            $gzipOptionsWrapper = [Microsoft.Extensions.Options.Options]::Create($gzipCompressionProviderOptions)
 069            $Options.Providers.Add([Microsoft.AspNetCore.ResponseCompression.GzipCompressionProvider]::new($gzipOptionsW
 070            if (-not $DisableBrotli.IsPresent) {
 071                $brotliCompressionProviderOptions = [Microsoft.AspNetCore.ResponseCompression.BrotliCompressionProviderO
 072                $brotliOptionsWrapper = [Microsoft.Extensions.Options.Options]::Create($brotliCompressionProviderOptions
 073                $Options.Providers.Add([Microsoft.AspNetCore.ResponseCompression.BrotliCompressionProvider]::new($brotli
 74            }
 75        }
 76    }
 77
 078    [Kestrun.Hosting.KestrunHttpMiddlewareExtensions]::AddResponseCompression($Server, $Options) | Out-Null
 79}
 80

Methods/Properties

Add-KrCompressionMiddleware()