use brotli::{BrotliCompress, enc::BrotliEncoderParams};
use super::{Compressor, error::Error};
#[derive(Clone, Debug, Default)]
pub struct BrotliCompressor {
pub params: BrotliEncoderParams,
}
impl BrotliCompressor {
#[cfg_attr(test, coverage(off))]
#[must_use]
pub fn new(params: BrotliEncoderParams) -> Self {
Self { params }
}
}
impl Compressor for BrotliCompressor {
fn compress(&self, data: &[u8]) -> Result<Vec<u8>, Error> {
let mut data = data;
let mut buf = Vec::new();
BrotliCompress(&mut data, &mut buf, &self.params)?;
Ok(buf)
}
}