pub struct RequestDecompression<S> { /* private fields */ }Expand description
Decompresses request bodies and calls its underlying service.
Transparently decompresses request bodies based on the Content-Encoding header.
When the encoding in the Content-Encoding header is not accepted an Unsupported Media Type
status code will be returned with the accepted encodings in the Accept-Encoding header.
Enabling pass-through of unaccepted encodings will not return an Unsupported Media Type but
will call the underlying service with the unmodified request if the encoding is not supported.
This is disabled by default.
See the module docs for more details.
Implementations§
Source§impl<S> RequestDecompression<S>
 
impl<S> RequestDecompression<S>
Sourcepub fn new(service: S) -> RequestDecompression<S>
 
pub fn new(service: S) -> RequestDecompression<S>
Creates a new RequestDecompression wrapping the service.
Sourcepub fn into_inner(self) -> S
 
pub fn into_inner(self) -> S
Consumes self, returning the underlying service.
Sourcepub fn layer() -> RequestDecompressionLayer
 
pub fn layer() -> RequestDecompressionLayer
Returns a new Layer that wraps services with a RequestDecompression middleware.
Sourcepub fn pass_through_unaccepted(self, enabled: bool) -> RequestDecompression<S>
 
pub fn pass_through_unaccepted(self, enabled: bool) -> RequestDecompression<S>
Passes through the request even when the encoding is not supported.
By default pass-through is disabled.
Sourcepub fn gzip(self, enable: bool) -> RequestDecompression<S>
 
pub fn gzip(self, enable: bool) -> RequestDecompression<S>
Sets whether to support gzip encoding.
Sourcepub fn deflate(self, enable: bool) -> RequestDecompression<S>
 
pub fn deflate(self, enable: bool) -> RequestDecompression<S>
Sets whether to support Deflate encoding.
Sourcepub fn br(self, enable: bool) -> RequestDecompression<S>
 
pub fn br(self, enable: bool) -> RequestDecompression<S>
Sets whether to support Brotli encoding.
Sourcepub fn zstd(self, enable: bool) -> RequestDecompression<S>
 
pub fn zstd(self, enable: bool) -> RequestDecompression<S>
Sets whether to support Zstd encoding.
Sourcepub fn no_gzip(self) -> RequestDecompression<S>
 
pub fn no_gzip(self) -> RequestDecompression<S>
Disables support for gzip encoding.
This method is available even if the gzip crate feature is disabled.
Sourcepub fn no_deflate(self) -> RequestDecompression<S>
 
pub fn no_deflate(self) -> RequestDecompression<S>
Disables support for Deflate encoding.
This method is available even if the deflate crate feature is disabled.
Sourcepub fn no_br(self) -> RequestDecompression<S>
 
pub fn no_br(self) -> RequestDecompression<S>
Disables support for Brotli encoding.
This method is available even if the br crate feature is disabled.
Sourcepub fn no_zstd(self) -> RequestDecompression<S>
 
pub fn no_zstd(self) -> RequestDecompression<S>
Disables support for Zstd encoding.
This method is available even if the zstd crate feature is disabled.
Trait Implementations§
Source§impl<S> Clone for RequestDecompression<S>where
    S: Clone,
 
impl<S> Clone for RequestDecompression<S>where
    S: Clone,
Source§fn clone(&self) -> RequestDecompression<S>
 
fn clone(&self) -> RequestDecompression<S>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<S> Debug for RequestDecompression<S>where
    S: Debug,
 
impl<S> Debug for RequestDecompression<S>where
    S: Debug,
Source§impl<S, ReqBody, ResBody, D> Service<Request<ReqBody>> for RequestDecompression<S>
 
impl<S, ReqBody, ResBody, D> Service<Request<ReqBody>> for RequestDecompression<S>
Source§type Response = Response<UnsyncBoxBody<D, Box<dyn Error + Sync + Send>>>
 
type Response = Response<UnsyncBoxBody<D, Box<dyn Error + Sync + Send>>>
Source§type Error = <S as Service<Request<DecompressionBody<ReqBody>>>>::Error
 
type Error = <S as Service<Request<DecompressionBody<ReqBody>>>>::Error
Source§type Future = RequestDecompressionFuture<<S as Service<Request<DecompressionBody<ReqBody>>>>::Future, ResBody, <S as Service<Request<DecompressionBody<ReqBody>>>>::Error>
 
type Future = RequestDecompressionFuture<<S as Service<Request<DecompressionBody<ReqBody>>>>::Future, ResBody, <S as Service<Request<DecompressionBody<ReqBody>>>>::Error>
Auto Trait Implementations§
impl<S> Freeze for RequestDecompression<S>where
    S: Freeze,
impl<S> RefUnwindSafe for RequestDecompression<S>where
    S: RefUnwindSafe,
impl<S> Send for RequestDecompression<S>where
    S: Send,
impl<S> Sync for RequestDecompression<S>where
    S: Sync,
impl<S> Unpin for RequestDecompression<S>where
    S: Unpin,
impl<S> UnwindSafe for RequestDecompression<S>where
    S: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
    T: ?Sized,
 
impl<T> PolicyExt for Twhere
    T: ?Sized,
Source§impl<S, R> ServiceExt<R> for Swhere
    S: Service<R>,
 
impl<S, R> ServiceExt<R> for Swhere
    S: Service<R>,
Source§fn into_make_service(self) -> IntoMakeService<S>
 
fn into_make_service(self) -> IntoMakeService<S>
MakeService, that is a Service whose
response is another service. Read moreSource§fn into_make_service_with_connect_info<C>(
    self,
) -> IntoMakeServiceWithConnectInfo<S, C>
 
fn into_make_service_with_connect_info<C>( self, ) -> IntoMakeServiceWithConnectInfo<S, C>
MakeService, that will store C’s
associated ConnectInfo in a request extension such that ConnectInfo
can extract it. Read moreSource§fn handle_error<F, T>(self, f: F) -> HandleError<Self, F, T>
 
fn handle_error<F, T>(self, f: F) -> HandleError<Self, F, T>
HandleError, that will handle errors
by converting them into responses. Read moreSource§impl<T, Request> ServiceExt<Request> for T
 
impl<T, Request> ServiceExt<Request> for T
Source§fn ready(&mut self) -> Ready<'_, Self, Request>where
    Self: Sized,
 
fn ready(&mut self) -> Ready<'_, Self, Request>where
    Self: Sized,
Source§fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
    Self: Sized,
 
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
    Self: Sized,
Source§fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
    Self: Sized,
 
fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
    Self: Sized,
Service, calling it with the provided request once it is ready.Source§fn and_then<F>(self, f: F) -> AndThen<Self, F>
 
fn and_then<F>(self, f: F) -> AndThen<Self, F>
poll_ready method. Read moreSource§fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
 
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
poll_ready method. Read moreSource§fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
 
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
poll_ready method. Read moreSource§fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
 
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
Result<Self::Response, Self::Error>)
to a different value, regardless of whether the future succeeds or
fails. Read moreSource§fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
 
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
Source§fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F>where
    Self: Sized,
    F: AsyncPredicate<NewRequest>,
 
fn filter_async<F, NewRequest>(self, filter: F) -> AsyncFilter<Self, F>where
    Self: Sized,
    F: AsyncPredicate<NewRequest>,
AsyncFilter that conditionally accepts or
rejects requests based on an [async predicate]. Read moreSource§fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
 
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
Source§fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
 
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
Source§impl<T> ServiceExt for T
 
impl<T> ServiceExt for T
Source§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
    Self: Sized,
 
fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
    Self: Sized,
Source§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
    Self: Sized,
 
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
    Self: Sized,
Source§fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
    Self: Sized,
 
fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
    Self: Sized,
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
    Self: Sized,
 
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
    Self: Sized,
Source§fn compression(self) -> Compression<Self>where
    Self: Sized,
 
fn compression(self) -> Compression<Self>where
    Self: Sized,
Source§fn decompression(self) -> Decompression<Self>where
    Self: Sized,
 
fn decompression(self) -> Decompression<Self>where
    Self: Sized,
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
    Self: Sized,
 
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
    Self: Sized,
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
    Self: Sized,
 
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
    Self: Sized,
Source§fn follow_redirects(self) -> FollowRedirect<Self>where
    Self: Sized,
 
fn follow_redirects(self) -> FollowRedirect<Self>where
    Self: Sized,
Source§fn sensitive_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
    Self: Sized,
 
fn sensitive_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
    Self: Sized,
Source§fn sensitive_request_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
    Self: Sized,
 
fn sensitive_request_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
    Self: Sized,
Source§fn sensitive_response_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
    Self: Sized,
 
fn sensitive_response_headers(
    self,
    headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
    Self: Sized,
Source§fn override_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
fn override_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
Source§fn append_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
fn append_request_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
Source§fn insert_request_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
 
fn insert_request_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetRequestHeader<Self, M>where
    Self: Sized,
Source§fn override_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
 
fn override_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
Source§fn append_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
 
fn append_response_header<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
Source§fn insert_response_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
 
fn insert_response_header_if_not_present<M>(
    self,
    header_name: HeaderName,
    make: M,
) -> SetResponseHeader<Self, M>where
    Self: Sized,
Source§fn set_request_id<M>(
    self,
    header_name: HeaderName,
    make_request_id: M,
) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
 
fn set_request_id<M>(
    self,
    header_name: HeaderName,
    make_request_id: M,
) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
Source§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
 
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
    Self: Sized,
    M: MakeRequestId,
x-request-id as the header name. Read moreSource§fn propagate_request_id(
    self,
    header_name: HeaderName,
) -> PropagateRequestId<Self>where
    Self: Sized,
 
fn propagate_request_id(
    self,
    header_name: HeaderName,
) -> PropagateRequestId<Self>where
    Self: Sized,
Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
    Self: Sized,
 
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
    Self: Sized,
x-request-id as the header name. Read moreSource§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
    Self: Sized,
 
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
    Self: Sized,
500 Internal Server responses. Read moreSource§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
    Self: Sized,
 
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
    Self: Sized,
413 Payload Too Large responses. Read more