amadeus_utils/
compression.rs

1/// Compression utilities to match Elixir reference implementation
2use flate2::{Compression, read::DeflateDecoder, write::DeflateEncoder};
3use std::io::{Read, Write};
4
5/// Compress data using raw deflate compression (compatible with Elixir's deflate_compress)
6pub fn compress_with_zlib(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
7    let mut encoder = DeflateEncoder::new(Vec::new(), Compression::new(6));
8    encoder.write_all(data)?;
9    encoder.finish()
10}
11
12/// Decompress data using raw deflate decompression (compatible with Elixir's deflate_decompress)
13pub fn decompress_with_zlib(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
14    let mut decoder = DeflateDecoder::new(data);
15    let mut result = Vec::new();
16    decoder.read_to_end(&mut result)?;
17    Ok(result)
18}