armature-compression

Crates.ioarmature-compression
lib.rsarmature-compression
version0.1.2
created_at2025-12-26 22:16:08.598991+00
updated_at2025-12-30 22:19:05.387736+00
descriptionHTTP compression middleware with gzip, brotli, and zstd support
homepagehttps://pegasusheavy.github.io/armature
repositoryhttps://github.com/pegasusheavy/armature
max_upload_size
id2006344
size105,539
Joseph R. Quinn (quinnjr)

documentation

README

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

Commit count: 0

cargo fmt