Struct Decompression
pub struct Decompression<S, M = DefaultDecompressionMatcher> { /* private fields */ }Expand description
Decompresses response bodies of the underlying service.
This adds the Accept-Encoding header to requests and transparently decompresses response
bodies based on the Content-Encoding header.
See the module docs for more details.
Implementations§
§impl<S> Decompression<S>
impl<S> Decompression<S>
pub fn new(service: S) -> Decompression<S>
pub fn new(service: S) -> Decompression<S>
Creates a new Decompression wrapping the service.
§impl<S, M> Decompression<S, M>
impl<S, M> Decompression<S, M>
pub fn into_inner(self) -> S
pub fn into_inner(self) -> S
Consumes self, returning the underlying service.
pub fn with_insert_accept_encoding_header(
self,
insert: bool,
) -> Decompression<S, M>
pub fn with_insert_accept_encoding_header( self, insert: bool, ) -> Decompression<S, M>
Sets whether the layer inserts Accept-Encoding into requests when it is absent.
When disabled, the request header is forwarded as-is and the layer only advertises
supported encodings if the request already contains an Accept-Encoding header.
pub fn set_insert_accept_encoding_header(
&mut self,
insert: bool,
) -> &mut Decompression<S, M>
pub fn set_insert_accept_encoding_header( &mut self, insert: bool, ) -> &mut Decompression<S, M>
Sets whether the layer inserts Accept-Encoding into requests when it is absent.
When disabled, the request header is forwarded as-is and the layer only advertises
supported encodings if the request already contains an Accept-Encoding header.
pub fn with_matcher<T>(self, matcher: T) -> Decompression<S, T>
pub fn with_matcher<T>(self, matcher: T) -> Decompression<S, T>
Replaces the request/response decompression matcher.
The matcher runs at request time and may select a second matcher to evaluate the response after the inner service returns. If no response matcher is selected or if the selected response matcher does not match, the response is left compressed even when Rama supports decompressing it.
pub fn with_gzip(self, enable: bool) -> Decompression<S, M>
pub fn with_gzip(self, enable: bool) -> Decompression<S, M>
Sets whether to request the gzip encoding.
pub fn set_gzip(&mut self, enable: bool) -> &mut Decompression<S, M>
pub fn set_gzip(&mut self, enable: bool) -> &mut Decompression<S, M>
Sets whether to request the gzip encoding.
pub fn with_deflate(self, enable: bool) -> Decompression<S, M>
pub fn with_deflate(self, enable: bool) -> Decompression<S, M>
Sets whether to request the Deflate encoding.
pub fn set_deflate(&mut self, enable: bool) -> &mut Decompression<S, M>
pub fn set_deflate(&mut self, enable: bool) -> &mut Decompression<S, M>
Sets whether to request the Deflate encoding.
pub fn with_br(self, enable: bool) -> Decompression<S, M>
pub fn with_br(self, enable: bool) -> Decompression<S, M>
Sets whether to request the Brotli encoding.
pub fn set_br(&mut self, enable: bool) -> &mut Decompression<S, M>
pub fn set_br(&mut self, enable: bool) -> &mut Decompression<S, M>
Sets whether to request the Brotli encoding.
pub fn with_zstd(self, enable: bool) -> Decompression<S, M>
pub fn with_zstd(self, enable: bool) -> Decompression<S, M>
Sets whether to request the Zstd encoding.
pub fn set_zstd(&mut self, enable: bool) -> &mut Decompression<S, M>
pub fn set_zstd(&mut self, enable: bool) -> &mut Decompression<S, M>
Sets whether to request the Zstd encoding.
Trait Implementations§
§impl<S, M> Clone for Decompression<S, M>
impl<S, M> Clone for Decompression<S, M>
§fn clone(&self) -> Decompression<S, M>
fn clone(&self) -> Decompression<S, M>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<S, M> Debug for Decompression<S, M>
impl<S, M> Debug for Decompression<S, M>
§impl<S, M, ReqBody, ResBody> Service<Request<ReqBody>> for Decompression<S, M>where
S: Service<Request<ReqBody>, Output = Response<ResBody>>,
<S as Service<Request<ReqBody>>>::Error: Into<Box<dyn Error + Sync + Send>>,
M: ServiceMatcher<Request<ReqBody>, ModifiedInput = Request<ReqBody>>,
<M as ServiceMatcher<Request<ReqBody>>>::Service: ServiceMatcher<Response<ResBody>, ModifiedInput = Response<ResBody>, Service = ()>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Error: Into<Box<dyn Error + Sync + Send>>,
<M as ServiceMatcher<Request<ReqBody>>>::Error: Into<Box<dyn Error + Sync + Send>>,
ReqBody: Send + 'static,
ResBody: Body + Send + 'static,
<ResBody as Body>::Data: Send + 'static,
<ResBody as Body>::Error: Send + 'static,
impl<S, M, ReqBody, ResBody> Service<Request<ReqBody>> for Decompression<S, M>where
S: Service<Request<ReqBody>, Output = Response<ResBody>>,
<S as Service<Request<ReqBody>>>::Error: Into<Box<dyn Error + Sync + Send>>,
M: ServiceMatcher<Request<ReqBody>, ModifiedInput = Request<ReqBody>>,
<M as ServiceMatcher<Request<ReqBody>>>::Service: ServiceMatcher<Response<ResBody>, ModifiedInput = Response<ResBody>, Service = ()>,
<<M as ServiceMatcher<Request<ReqBody>>>::Service as ServiceMatcher<Response<ResBody>>>::Error: Into<Box<dyn Error + Sync + Send>>,
<M as ServiceMatcher<Request<ReqBody>>>::Error: Into<Box<dyn Error + Sync + Send>>,
ReqBody: Send + 'static,
ResBody: Body + Send + 'static,
<ResBody as Body>::Data: Send + 'static,
<ResBody as Body>::Error: Send + 'static,
§type Output = Response<DecompressionBody<ResBody>>
type Output = Response<DecompressionBody<ResBody>>
§async fn serve(
&self,
req: Request<ReqBody>,
) -> Result<<Decompression<S, M> as Service<Request<ReqBody>>>::Output, <Decompression<S, M> as Service<Request<ReqBody>>>::Error>
async fn serve( &self, req: Request<ReqBody>, ) -> Result<<Decompression<S, M> as Service<Request<ReqBody>>>::Output, <Decompression<S, M> as Service<Request<ReqBody>>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl<S, M> Freeze for Decompression<S, M>
impl<S, M> RefUnwindSafe for Decompression<S, M>where
S: RefUnwindSafe,
M: RefUnwindSafe,
impl<S, M> Send for Decompression<S, M>
impl<S, M> Sync for Decompression<S, M>
impl<S, M> Unpin for Decompression<S, M>
impl<S, M> UnsafeUnpin for Decompression<S, M>where
S: UnsafeUnpin,
M: UnsafeUnpin,
impl<S, M> UnwindSafe for Decompression<S, M>where
S: UnwindSafe,
M: 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<T, ReqBody, ResBody> GrpcService<ReqBody> for T
impl<T, ReqBody, ResBody> GrpcService<ReqBody> for T
§type ResponseBody = ResBody
type ResponseBody = ResBody
§fn serve(
&self,
request: Request<ReqBody>,
) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>>
fn serve( &self, request: Request<ReqBody>, ) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>>
§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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§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