pub struct JsonRequestRewrite<S, H> { /* private fields */ }Expand description
Rewrites JSON request bodies before they reach the underlying service,
using rama’s streaming JsonRewriter.
See the module docs for details. Construct it
directly with new or via JsonRequestRewriteLayer.
Implementations§
Source§impl<S, H> JsonRequestRewrite<S, H>
impl<S, H> JsonRequestRewrite<S, H>
Sourcepub fn new(
inner: S,
selectors: impl IntoIterator<Item = JsonPath>,
handler: H,
) -> Self
pub fn new( inner: S, selectors: impl IntoIterator<Item = JsonPath>, handler: H, ) -> Self
Creates a new JsonRequestRewrite service.
The selector index passed to the handler is the index into
selectors; keep the two aligned.
Sourcepub fn with_rewrite_policy(
self,
policy: impl Fn(&HeaderMap, &Extensions) -> bool + Send + Sync + 'static,
) -> Self
pub fn with_rewrite_policy( self, policy: impl Fn(&HeaderMap, &Extensions) -> bool + Send + Sync + 'static, ) -> Self
Sets a custom request rewrite policy.
The predicate receives the request headers and extensions and can
narrow rewriting beyond the built-in Content-Encoding guard.
Sourcepub fn set_rewrite_policy(
&mut self,
policy: impl Fn(&HeaderMap, &Extensions) -> bool + Send + Sync + 'static,
) -> &mut Self
pub fn set_rewrite_policy( &mut self, policy: impl Fn(&HeaderMap, &Extensions) -> bool + Send + Sync + 'static, ) -> &mut Self
Sets a custom request rewrite policy.
The predicate receives the request headers and extensions and can
narrow rewriting beyond the built-in Content-Encoding guard.
Sourcepub fn with_max_buffered_bytes(self, max_buffered_bytes: usize) -> Self
pub fn with_max_buffered_bytes(self, max_buffered_bytes: usize) -> Self
Sets the tokenizer buffered-input limit for each rewritten body.
Sourcepub fn set_max_buffered_bytes(&mut self, max_buffered_bytes: usize) -> &mut Self
pub fn set_max_buffered_bytes(&mut self, max_buffered_bytes: usize) -> &mut Self
Sets the tokenizer buffered-input limit for each rewritten body.
Sourcepub fn into_inner(self) -> S
pub fn into_inner(self) -> S
Consumes self, returning the underlying service.
Trait Implementations§
Source§impl<S: Clone, H: Clone> Clone for JsonRequestRewrite<S, H>
impl<S: Clone, H: Clone> Clone for JsonRequestRewrite<S, H>
Source§fn clone(&self) -> JsonRequestRewrite<S, H>
fn clone(&self) -> JsonRequestRewrite<S, H>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<S: Debug, H> Debug for JsonRequestRewrite<S, H>
impl<S: Debug, H> Debug for JsonRequestRewrite<S, H>
Source§impl<S, H, ReqBody> Service<Request<ReqBody>> for JsonRequestRewrite<S, H>where
S: Service<Request<JsonRewriteBody<ReqBody, H>>>,
ReqBody: StreamingBody<Data: Send + 'static, Error: Into<BoxError> + Send + 'static> + Send + 'static,
H: JsonValueHandler + Clone + Send + Sync + 'static,
impl<S, H, ReqBody> Service<Request<ReqBody>> for JsonRequestRewrite<S, H>where
S: Service<Request<JsonRewriteBody<ReqBody, H>>>,
ReqBody: StreamingBody<Data: Send + 'static, Error: Into<BoxError> + Send + 'static> + Send + 'static,
H: JsonValueHandler + Clone + Send + Sync + 'static,
Source§type Output = <S as Service<Request<JsonRewriteBody<ReqBody, H>>>>::Output
type Output = <S as Service<Request<JsonRewriteBody<ReqBody, H>>>>::Output
Source§type Error = <S as Service<Request<JsonRewriteBody<ReqBody, H>>>>::Error
type Error = <S as Service<Request<JsonRewriteBody<ReqBody, H>>>>::Error
Auto Trait Implementations§
impl<S, H> !RefUnwindSafe for JsonRequestRewrite<S, H>
impl<S, H> !UnwindSafe for JsonRequestRewrite<S, H>
impl<S, H> Freeze for JsonRequestRewrite<S, H>
impl<S, H> Send for JsonRequestRewrite<S, H>
impl<S, H> Sync for JsonRequestRewrite<S, H>
impl<S, H> Unpin for JsonRequestRewrite<S, H>
impl<S, H> UnsafeUnpin for JsonRequestRewrite<S, H>where
S: UnsafeUnpin,
H: UnsafeUnpin,
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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,
Source§impl<S, Input, Connection> ConnectorService<Input> for S
impl<S, Input, Connection> ConnectorService<Input> for S
Source§type Connection = Connection
type Connection = Connection
ConnectorServiceSource§type Error = <S as Service<Input>>::Error
type Error = <S as Service<Input>>::Error
Source§fn connect(
&self,
input: Input,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, <S as ConnectorService<Input>>::Error>> + Send
fn connect( &self, input: Input, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, <S as ConnectorService<Input>>::Error>> + Send
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<S, Body> HttpClientExt for S
impl<S, Body> HttpClientExt for S
Source§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute method.Source§type ExecuteError = <S as Service<Request>>::Error
type ExecuteError = <S as Service<Request>>::Error
execute method.Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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>
Source§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>
Source§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 moreSource§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> 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 moreSource§impl<S> IntoEndpointService<(S,)> for S
impl<S> IntoEndpointService<(S,)> for S
type Service = S
Source§fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
rama_core::Service.Source§impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
type Service = S
Source§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.