diff --git a/kube/Cargo.toml b/kube/Cargo.toml index 179586a96..5bbc67494 100644 --- a/kube/Cargo.toml +++ b/kube/Cargo.toml @@ -23,6 +23,7 @@ derive = ["kube-derive"] jsonpatch = ["json-patch"] ws = ["tokio-tungstenite"] oauth = ["tame-oauth"] +gzip = ["async-compression"] [package.metadata.docs.rs] features = ["derive", "ws"] @@ -62,7 +63,7 @@ hyper-tls = { version = "0.5.0", optional = true } hyper-rustls = { version = "0.22.1", optional = true } tokio-tungstenite = { version = "0.13.0", optional = true } tower = { version = "0.4.4", features = ["buffer", "util"] } -async-compression = { version = "0.3.7", features = ["gzip", "tokio"] } +async-compression = { version = "0.3.7", features = ["gzip", "tokio"], optional = true } hyper-timeout = "0.4.1" tame-oauth = { version = "0.4.7", features = ["gcp"], optional = true } pin-project = "1.0.4" diff --git a/kube/src/service/mod.rs b/kube/src/service/mod.rs index 3e3875b6c..94543c338 100644 --- a/kube/src/service/mod.rs +++ b/kube/src/service/mod.rs @@ -1,7 +1,7 @@ //! `Service` abstracts the connection to Kubernetes API server. mod auth; -mod compression; +#[cfg(feature = "gzip")] mod compression; mod headers; mod log; mod tls; @@ -9,7 +9,7 @@ mod url; use self::{log::LogRequest, url::set_cluster_url}; use auth::AuthLayer; -use compression::{accept_compressed, maybe_decompress}; +#[cfg(feature = "gzip")] use compression::{accept_compressed, maybe_decompress}; use headers::set_default_headers; use tls::HttpsConnector; @@ -82,12 +82,18 @@ impl TryFrom for Service { ); } + #[cfg(feature = "gzip")] let common = ServiceBuilder::new() .map_request(move |r| set_cluster_url(r, &cluster_url)) .map_request(move |r| set_default_headers(r, default_headers.clone())) .map_request(accept_compressed) .map_response(maybe_decompress) .into_inner(); + #[cfg(not(feature = "gzip"))] + let common = ServiceBuilder::new() + .map_request(move |r| set_cluster_url(r, &cluster_url)) + .map_request(move |r| set_default_headers(r, default_headers.clone())) + .into_inner(); let https: HttpsConnector<_> = config.try_into()?; let mut connector = TimeoutConnector::new(https);