use super::CompressionConfig;
use tower_http::compression::CompressionLayer as TowerCompressionLayer;
pub struct CompressionLayer;
impl CompressionLayer {
pub fn new(config: &CompressionConfig) -> TowerCompressionLayer {
let mut layer = TowerCompressionLayer::new();
for algorithm in &config.algorithms {
match algorithm.to_lowercase().as_str() {
"gzip" => layer = layer.gzip(true),
"deflate" => layer = layer.deflate(true),
"br" | "brotli" => layer = layer.br(true),
"zstd" => layer = layer.zstd(true),
_ => {}
}
}
layer
}
}