tools: add compression module
only contains a basic enum for the different compresssion methods Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
f3c867a034
commit
ea62611d8e
@ -22,6 +22,7 @@ pub mod apt;
|
|||||||
pub mod async_io;
|
pub mod async_io;
|
||||||
pub mod borrow;
|
pub mod borrow;
|
||||||
pub mod cert;
|
pub mod cert;
|
||||||
|
pub mod compression;
|
||||||
pub mod daemon;
|
pub mod daemon;
|
||||||
pub mod disks;
|
pub mod disks;
|
||||||
pub mod format;
|
pub mod format;
|
||||||
|
39
src/tools/compression.rs
Normal file
39
src/tools/compression.rs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
use anyhow::{bail, Error};
|
||||||
|
use hyper::header;
|
||||||
|
|
||||||
|
/// Possible Compression Methods, order determines preference (later is preferred)
|
||||||
|
#[derive(Eq, Ord, PartialEq, PartialOrd, Debug)]
|
||||||
|
pub enum CompressionMethod {
|
||||||
|
Deflate,
|
||||||
|
// Gzip,
|
||||||
|
// Brotli,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CompressionMethod {
|
||||||
|
pub fn content_encoding(&self) -> header::HeaderValue {
|
||||||
|
header::HeaderValue::from_static(self.extension())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn extension(&self) -> &'static str {
|
||||||
|
match *self {
|
||||||
|
// CompressionMethod::Brotli => "br",
|
||||||
|
// CompressionMethod::Gzip => "gzip",
|
||||||
|
CompressionMethod::Deflate => "deflate",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::str::FromStr for CompressionMethod {
|
||||||
|
type Err = Error;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
|
match s {
|
||||||
|
// "br" => Ok(CompressionMethod::Brotli),
|
||||||
|
// "gzip" => Ok(CompressionMethod::Gzip),
|
||||||
|
"deflate" => Ok(CompressionMethod::Deflate),
|
||||||
|
// http accept-encoding allows to give weights with ';q='
|
||||||
|
other if other.starts_with("deflate;q=") => Ok(CompressionMethod::Deflate),
|
||||||
|
_ => bail!("unknown compression format"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user