use crate::error::Result;
use flate2::read::ZlibDecoder;
use std::io::Read;
pub fn decompress_stream(data: &[u8]) -> Result<Vec<u8>> {
if data.is_empty() {
return Ok(Vec::new());
}
use flate2::read::DeflateDecoder;
let mut decoder = DeflateDecoder::new(data);
let mut decompressed = Vec::new();
match decoder.read_to_end(&mut decompressed) {
Ok(_) => Ok(decompressed),
Err(_) => {
let mut decoder = ZlibDecoder::new(data);
let mut decompressed = Vec::new();
match decoder.read_to_end(&mut decompressed) {
Ok(_) => Ok(decompressed),
Err(_) => {
Ok(data.to_vec())
}
}
}
}
}