Struct RequestDecompression
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§
§impl<S> RequestDecompression<S>
impl<S> RequestDecompression<S>
pub fn new(service: S) -> RequestDecompression<S>
pub fn new(service: S) -> RequestDecompression<S>
Creates a new RequestDecompression wrapping the service.
pub fn into_inner(self) -> S
pub fn into_inner(self) -> S
Consumes self, returning the underlying service.
pub 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.
pub fn set_pass_through_unaccepted(
&mut self,
enabled: bool,
) -> &mut RequestDecompression<S>
pub fn set_pass_through_unaccepted( &mut self, enabled: bool, ) -> &mut RequestDecompression<S>
Passes through the request even when the encoding is not supported.
By default pass-through is disabled.
pub fn gzip(self, enable: bool) -> RequestDecompression<S>
pub fn gzip(self, enable: bool) -> RequestDecompression<S>
Sets whether to support gzip encoding.
pub fn set_gzip(&mut self, enable: bool) -> &mut RequestDecompression<S>
pub fn set_gzip(&mut self, enable: bool) -> &mut RequestDecompression<S>
Sets whether to support gzip encoding.
pub fn deflate(self, enable: bool) -> RequestDecompression<S>
pub fn deflate(self, enable: bool) -> RequestDecompression<S>
Sets whether to support Deflate encoding.
pub fn set_deflate(&mut self, enable: bool) -> &mut RequestDecompression<S>
pub fn set_deflate(&mut self, enable: bool) -> &mut RequestDecompression<S>
Sets whether to support Deflate encoding.
pub fn br(self, enable: bool) -> RequestDecompression<S>
pub fn br(self, enable: bool) -> RequestDecompression<S>
Sets whether to support Brotli encoding.
pub fn set_br(&mut self, enable: bool) -> &mut RequestDecompression<S>
pub fn set_br(&mut self, enable: bool) -> &mut RequestDecompression<S>
Sets whether to support Brotli encoding.
pub fn zstd(self, enable: bool) -> RequestDecompression<S>
pub fn zstd(self, enable: bool) -> RequestDecompression<S>
Sets whether to support Zstd encoding.
pub fn set_zstd(&mut self, enable: bool) -> &mut RequestDecompression<S>
pub fn set_zstd(&mut self, enable: bool) -> &mut RequestDecompression<S>
Sets whether to support Zstd encoding.
Trait Implementations§
§impl<S> Clone for RequestDecompression<S>where
S: Clone,
impl<S> Clone for RequestDecompression<S>where
S: Clone,
§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 more§impl<S> Debug for RequestDecompression<S>where
S: Debug,
impl<S> Debug for RequestDecompression<S>where
S: Debug,
§impl<S, ReqBody, ResBody, D> Service<Request<ReqBody>> for RequestDecompression<S>where
S: Service<Request<DecompressionBody<ReqBody>>, Response = Response<ResBody>>,
<S as Service<Request<DecompressionBody<ReqBody>>>>::Error: Into<Box<dyn Error + Sync + Send>>,
ReqBody: Body + Send + 'static,
ResBody: Body<Data = D> + Send + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Sync + Send>>,
D: Buf + 'static,
impl<S, ReqBody, ResBody, D> Service<Request<ReqBody>> for RequestDecompression<S>where
S: Service<Request<DecompressionBody<ReqBody>>, Response = Response<ResBody>>,
<S as Service<Request<DecompressionBody<ReqBody>>>>::Error: Into<Box<dyn Error + Sync + Send>>,
ReqBody: Body + Send + 'static,
ResBody: Body<Data = D> + Send + 'static,
<ResBody as Body>::Error: Into<Box<dyn Error + Sync + Send>>,
D: Buf + 'static,
§type Response = Response<UnsyncBoxBody<D, Box<dyn Error + Sync + Send>>>
type Response = Response<UnsyncBoxBody<D, Box<dyn Error + Sync + Send>>>
§async fn serve(
&self,
req: Request<ReqBody>,
) -> Result<<RequestDecompression<S> as Service<Request<ReqBody>>>::Response, <RequestDecompression<S> as Service<Request<ReqBody>>>::Error>
async fn serve( &self, req: Request<ReqBody>, ) -> Result<<RequestDecompression<S> as Service<Request<ReqBody>>>::Response, <RequestDecompression<S> as Service<Request<ReqBody>>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::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§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<S, Body> HttpClientExt for S
impl<S, Body> HttpClientExt for S
§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute method.§type ExecuteError = <S as Service<Request>>::Error
type ExecuteError = <S as Service<Request>>::Error
execute method.§fn get(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
GET request to a URL. Read more§fn post(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
POST request to a URL. Read more§fn put(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PUT request to a URL. Read more§fn patch(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PATCH request to a URL. Read more§fn delete(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
DELETE request to a URL. Read more§fn head(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
HEAD request to a URL. Read more§fn connect(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn connect( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
CONNECT request to a URL. Read more§fn request(
&self,
method: Method,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn build_from_request<RequestBody>(
&self,
request: Request<RequestBody>,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn build_from_request<RequestBody>( &self, request: Request<RequestBody>, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn execute(
&self,
request: Request,
) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
fn execute( &self, request: Request, ) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
Request. Read more§impl<S, Body> HttpClientWebSocketExt<Body> for S
impl<S, Body> HttpClientWebSocketExt<Body> for S
§fn websocket(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder] to be used to establish a WebSocket connection over http/1.1.§fn websocket_h2(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_h2( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder to be used to establish a WebSocket connection over h2.§fn websocket_with_request<RequestBody>(
&self,
req: Request<RequestBody>,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_with_request<RequestBody>( &self, req: Request<RequestBody>, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder starting from the given request. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more