#gzip #brotli #zstd

armature-compression

HTTP compression middleware with gzip, brotli, and zstd support

3 releases

0.1.2 Dec 30, 2025
0.1.1 Dec 29, 2025
0.1.0 Dec 26, 2025

#755 in Compression


Used in armature-framework

Apache-2.0

2MB
42K SLoC

armature-compression

HTTP response compression middleware for the Armature framework.

Features

  • Multiple Algorithms - gzip, brotli, zstd
  • Content Negotiation - Accept-Encoding support
  • Streaming - Compress as data is generated
  • Configurable - Min size, compression levels
  • Auto Detection - Skip already compressed content

Installation

[dependencies]
armature-compression = "0.1"

Quick Start

use armature_compression::CompressionMiddleware;
use armature_core::Application;

let app = Application::new()
    .with_middleware(CompressionMiddleware::default())
    .get("/data", handler);

Configuration

let compression = CompressionMiddleware::new()
    .gzip(CompressionLevel::Default)
    .brotli(CompressionLevel::Best)
    .min_size(1024)  // Don't compress < 1KB
    .exclude_types(vec!["image/*", "video/*"]);

Streaming Compression

use armature_compression::StreamingCompressor;

let compressor = StreamingCompressor::gzip();

// Compress chunks as they're generated
for chunk in data_stream {
    let compressed = compressor.compress_chunk(&chunk)?;
    response.write(compressed).await?;
}

License

MIT OR Apache-2.0

Dependencies

~33–50MB
~1M SLoC