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