statsig_rust/compression/
compression_helper.rs

1use crate::StatsigErr;
2#[cfg(not(feature = "with_zstd"))]
3use std::io::Write;
4
5#[cfg(feature = "with_zstd")]
6pub fn get_compression_format() -> String {
7    "zstd".to_string()
8}
9
10#[cfg(not(feature = "with_zstd"))]
11pub fn get_compression_format() -> String {
12    "gzip".to_string()
13}
14
15#[cfg(feature = "with_zstd")]
16pub fn compress_data(data: &[u8]) -> Result<Vec<u8>, StatsigErr> {
17    zstd::bulk::compress(data, 12).map_err(|e| StatsigErr::ZstdError(e.to_string()))
18}
19
20#[cfg(not(feature = "with_zstd"))]
21pub fn compress_data(data: &[u8]) -> Result<Vec<u8>, StatsigErr> {
22    let mut compressed = Vec::new();
23    let mut encoder = flate2::write::GzEncoder::new(&mut compressed, flate2::Compression::best());
24    encoder
25        .write_all(data)
26        .map_err(|e| StatsigErr::GzipError(e.to_string()))?;
27    encoder
28        .finish()
29        .map_err(|e| StatsigErr::GzipError(e.to_string()))?;
30    Ok(compressed)
31}