martin_tile_utils/
decoders.rs1use std::io::{Read as _, Write as _};
2
3use flate2::read::{GzDecoder, ZlibDecoder};
4use flate2::write::GzEncoder;
5
6pub fn decode_gzip(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
7 let mut decoder = GzDecoder::new(data);
8 let mut decompressed = Vec::new();
9 decoder.read_to_end(&mut decompressed)?;
10 Ok(decompressed)
11}
12
13pub fn decode_zlib(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
14 let mut decoder = ZlibDecoder::new(data);
15 let mut decompressed = Vec::new();
16 decoder.read_to_end(&mut decompressed)?;
17 Ok(decompressed)
18}
19
20pub fn encode_gzip(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
21 let mut encoder = GzEncoder::new(Vec::new(), flate2::Compression::default());
22 encoder.write_all(data)?;
23 encoder.finish()
24}
25
26pub fn decode_brotli(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
27 let mut decoder = brotli::Decompressor::new(data, 4096);
28 let mut decompressed = Vec::new();
29 decoder.read_to_end(&mut decompressed)?;
30 Ok(decompressed)
31}
32
33pub fn encode_brotli(data: &[u8]) -> Result<Vec<u8>, std::io::Error> {
34 let mut encoder = brotli::CompressorWriter::new(Vec::new(), 4096, 11, 22);
35 encoder.write_all(data)?;
36 Ok(encoder.into_inner())
37}