[pbs-devel] [PATCH proxmox-backup v2 1/5] tools: add compression module
Thomas Lamprecht
t.lamprecht at proxmox.com
Fri Apr 2 14:07:09 CEST 2021
On 01.04.21 16:11, Dominik Csapak wrote:
> only contains a basic enum for the different compresssion methods
>
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> src/tools.rs | 1 +
> src/tools/compression.rs | 37 +++++++++++++++++++++++++++++++++++++
> 2 files changed, 38 insertions(+)
> create mode 100644 src/tools/compression.rs
>
> diff --git a/src/tools.rs b/src/tools.rs
> index 7e3bff7b..cd1415ec 100644
> --- a/src/tools.rs
> +++ b/src/tools.rs
> @@ -22,6 +22,7 @@ pub mod apt;
> pub mod async_io;
> pub mod borrow;
> pub mod cert;
> +pub mod compression;
> pub mod daemon;
> pub mod disks;
> pub mod format;
> diff --git a/src/tools/compression.rs b/src/tools/compression.rs
> new file mode 100644
> index 00000000..fe15e8fc
> --- /dev/null
> +++ b/src/tools/compression.rs
> @@ -0,0 +1,37 @@
> +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",
I'd for now comment those out, as else we have a Some(_) in most match arms meaning that
when we actually implement those there's a higher chance that we forget to add the match
to such an arm and rust won't notice due to the "catch all".
> + }
> + }
> +}
> +
> +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::Brotli),
above should be CompressionMethod::Gzip
> + "deflate" => Ok(CompressionMethod::Deflate),
> + _ => bail!("unknown compression format"),
> + }
> + }
> +}
>
More information about the pbs-devel
mailing list