statsig_rust/compression/
compression_helper.rs

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