http_response_compression/
layer.rs1use crate::service::CompressionService;
2use tower::Layer;
3
4pub const DEFAULT_MIN_SIZE: usize = 860;
6
7#[derive(Debug, Clone)]
12pub struct CompressionLayer {
13 min_size: usize,
14}
15
16impl CompressionLayer {
17 pub fn new() -> Self {
21 Self {
22 min_size: DEFAULT_MIN_SIZE,
23 }
24 }
25
26 pub fn min_size(mut self, size: usize) -> Self {
31 self.min_size = size;
32 self
33 }
34}
35
36impl Default for CompressionLayer {
37 fn default() -> Self {
38 Self::new()
39 }
40}
41
42impl<S> Layer<S> for CompressionLayer {
43 type Service = CompressionService<S>;
44
45 fn layer(&self, inner: S) -> Self::Service {
46 CompressionService::new(inner, self.min_size)
47 }
48}