Struct StreamCompression
pub struct StreamCompression<S, P = DefaultStreamPredicate> { /* private fields */ }compression and http only.Expand description
Compress response bodies of the underlying service.
This uses the Accept-Encoding header to pick an appropriate encoding and adds the
Content-Encoding header to responses.
See the module docs for more details.
Implementations§
§impl<S> StreamCompression<S>
impl<S> StreamCompression<S>
pub fn new(service: S) -> StreamCompression<S>
pub fn new(service: S) -> StreamCompression<S>
Creates a new StreamCompression wrapping the service.
§impl<S, P> StreamCompression<S, P>
impl<S, P> StreamCompression<S, P>
pub fn into_inner(self) -> S
pub fn into_inner(self) -> S
Consumes self, returning the underlying service.
pub fn with_gzip(self, enable: bool) -> StreamCompression<S, P>
pub fn with_gzip(self, enable: bool) -> StreamCompression<S, P>
Sets whether to enable the gzip encoding.
pub fn set_gzip(&mut self, enable: bool) -> &mut StreamCompression<S, P>
pub fn set_gzip(&mut self, enable: bool) -> &mut StreamCompression<S, P>
Sets whether to enable the gzip encoding.
pub fn with_deflate(self, enable: bool) -> StreamCompression<S, P>
pub fn with_deflate(self, enable: bool) -> StreamCompression<S, P>
Sets whether to enable the Deflate encoding.
pub fn set_deflate(&mut self, enable: bool) -> &mut StreamCompression<S, P>
pub fn set_deflate(&mut self, enable: bool) -> &mut StreamCompression<S, P>
Sets whether to enable the Deflate encoding.
pub fn with_br(self, enable: bool) -> StreamCompression<S, P>
pub fn with_br(self, enable: bool) -> StreamCompression<S, P>
Sets whether to enable the Brotli encoding.
pub fn set_br(&mut self, enable: bool) -> &mut StreamCompression<S, P>
pub fn set_br(&mut self, enable: bool) -> &mut StreamCompression<S, P>
Sets whether to enable the Brotli encoding.
pub fn with_zstd(self, enable: bool) -> StreamCompression<S, P>
pub fn with_zstd(self, enable: bool) -> StreamCompression<S, P>
Sets whether to enable the Zstd encoding.
pub fn set_zstd(&mut self, enable: bool) -> &mut StreamCompression<S, P>
pub fn set_zstd(&mut self, enable: bool) -> &mut StreamCompression<S, P>
Sets whether to enable the Zstd encoding.
pub fn with_quality(self, quality: CompressionLevel) -> StreamCompression<S, P>
pub fn with_quality(self, quality: CompressionLevel) -> StreamCompression<S, P>
Sets the StreamCompression quality.
pub fn set_quality(
&mut self,
quality: CompressionLevel,
) -> &mut StreamCompression<S, P>
pub fn set_quality( &mut self, quality: CompressionLevel, ) -> &mut StreamCompression<S, P>
Sets the StreamCompression quality.
pub fn with_enforce_not_acceptable(
self,
enable: bool,
) -> StreamCompression<S, P>
pub fn with_enforce_not_acceptable( self, enable: bool, ) -> StreamCompression<S, P>
Sets whether to respond with 406 Not Acceptable when the client’s
Accept-Encoding header rejects every available representation
(e.g. *;q=0 or a lone identity;q=0), as recommended by RFC 9110 §12.5.3.
Enabled by default. Disable to opt out and instead fall back to sending an uncompressed (identity) response regardless of the client’s stated preference.
pub fn set_enforce_not_acceptable(
&mut self,
enable: bool,
) -> &mut StreamCompression<S, P>
pub fn set_enforce_not_acceptable( &mut self, enable: bool, ) -> &mut StreamCompression<S, P>
Sets whether to respond with 406 Not Acceptable when the client’s
Accept-Encoding header rejects every available representation
(e.g. *;q=0 or a lone identity;q=0), as recommended by RFC 9110 §12.5.3.
Enabled by default. Disable to opt out and instead fall back to sending an uncompressed (identity) response regardless of the client’s stated preference.
pub fn with_compress_predicate<C>(self, predicate: C) -> StreamCompression<S, C>where
C: Predicate,
pub fn with_compress_predicate<C>(self, predicate: C) -> StreamCompression<S, C>where
C: Predicate,
Replace the current StreamCompression predicate.
Predicates are used to determine whether a response should be compressed or not.
The default predicate is DefaultPredicate. See its documentation for more
details on which responses it wont compress.
Trait Implementations§
§impl<S, P> Clone for StreamCompression<S, P>
impl<S, P> Clone for StreamCompression<S, P>
§fn clone(&self) -> StreamCompression<S, P>
fn clone(&self) -> StreamCompression<S, P>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<S, P> Debug for StreamCompression<S, P>
impl<S, P> Debug for StreamCompression<S, P>
§impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for StreamCompression<S, P>
impl<ReqBody, ResBody, S, P> Service<Request<ReqBody>> for StreamCompression<S, P>
§type Output = Response<StreamCompressionBody<ResBody>>
type Output = Response<StreamCompressionBody<ResBody>>
§async fn serve(
&self,
req: Request<ReqBody>,
) -> Result<<StreamCompression<S, P> as Service<Request<ReqBody>>>::Output, <StreamCompression<S, P> as Service<Request<ReqBody>>>::Error>
async fn serve( &self, req: Request<ReqBody>, ) -> Result<<StreamCompression<S, P> as Service<Request<ReqBody>>>::Output, <StreamCompression<S, P> 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, P> Freeze for StreamCompression<S, P>
impl<S, P> RefUnwindSafe for StreamCompression<S, P>where
S: RefUnwindSafe,
P: RefUnwindSafe,
impl<S, P> Send for StreamCompression<S, P>
impl<S, P> Sync for StreamCompression<S, P>
impl<S, P> Unpin for StreamCompression<S, P>
impl<S, P> UnsafeUnpin for StreamCompression<S, P>where
S: UnsafeUnpin,
P: UnsafeUnpin,
impl<S, P> UnwindSafe for StreamCompression<S, P>where
S: UnwindSafe,
P: 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>> + Send
fn serve( &self, request: Request<ReqBody>, ) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>> + Send
§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<S> IntoEndpointService<(S,)> for S
impl<S> IntoEndpointService<(S,)> for S
type Service = S
§fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
rama_core::Service.§impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
type Service = S
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
fn into_endpoint_service_with_state( self, _state: State, ) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
rama_core::Service with state.§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§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer