statsig_rust/compression/
compression_helper.rs1use 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}