tower_http/decompression/
layer.rs1use super::Decompression;
2use crate::compression_utils::AcceptEncoding;
3use tower_layer::Layer;
4
5#[derive(Debug, Default, Clone)]
12pub struct DecompressionLayer {
13 accept: AcceptEncoding,
14}
15
16impl<S> Layer<S> for DecompressionLayer {
17 type Service = Decompression<S>;
18
19 fn layer(&self, service: S) -> Self::Service {
20 Decompression {
21 inner: service,
22 accept: self.accept,
23 }
24 }
25}
26
27impl DecompressionLayer {
28 pub fn new() -> Self {
30 Default::default()
31 }
32
33 #[cfg(feature = "decompression-gzip")]
35 pub fn gzip(mut self, enable: bool) -> Self {
36 self.accept.set_gzip(enable);
37 self
38 }
39
40 #[cfg(feature = "decompression-deflate")]
42 pub fn deflate(mut self, enable: bool) -> Self {
43 self.accept.set_deflate(enable);
44 self
45 }
46
47 #[cfg(feature = "decompression-br")]
49 pub fn br(mut self, enable: bool) -> Self {
50 self.accept.set_br(enable);
51 self
52 }
53
54 #[cfg(feature = "decompression-zstd")]
56 pub fn zstd(mut self, enable: bool) -> Self {
57 self.accept.set_zstd(enable);
58 self
59 }
60
61 pub fn no_gzip(mut self) -> Self {
65 self.accept.set_gzip(false);
66 self
67 }
68
69 pub fn no_deflate(mut self) -> Self {
73 self.accept.set_deflate(false);
74 self
75 }
76
77 pub fn no_br(mut self) -> Self {
81 self.accept.set_br(false);
82 self
83 }
84
85 pub fn no_zstd(mut self) -> Self {
89 self.accept.set_zstd(false);
90 self
91 }
92}