pub struct GraphQLChecker { /* private fields */ }Expand description
A compiled GraphQL check for one route, built from the route’s
RouteGraphql config block. Cheap to construct (clones the config
values); held by the request path for the duration of one check.
Implementations§
Source§impl GraphQLChecker
impl GraphQLChecker
Sourcepub fn from_config(cfg: &RouteGraphql) -> Option<Self>
pub fn from_config(cfg: &RouteGraphql) -> Option<Self>
Build a checker from a route’s GraphQL config block. Returns
None when the block is present but disabled (the enabled flag
is false) – the caller treats None as “no check”.
Sourcepub fn max_body_bytes(&self) -> usize
pub fn max_body_bytes(&self) -> usize
The configured body-size cap.
Sourcepub fn check_query(&self, query: &str) -> (GraphQLCheckResult, usize, u64)
pub fn check_query(&self, query: &str) -> (GraphQLCheckResult, usize, u64)
Run the depth/complexity/persisted-query check against a query string. This is the pure core of the check – the caller is responsible for extracting the query text from the request body and enforcing the body-size cap.
Returns the check result plus the computed depth and complexity (for metric reporting; both are 0 when the query could not be scanned).
Sourcepub async fn check_body<B>(
&self,
body: B,
) -> (GraphQLCheckResult, usize, u64, Bytes)
pub async fn check_body<B>( &self, body: B, ) -> (GraphQLCheckResult, usize, u64, Bytes)
Run the full check against a request body: enforce the body-size
cap, extract the query string from the JSON body, and run
check_query. Returns the result, the computed depth, the
computed complexity, and the collected body bytes (for
forwarding to the upstream – the body is consumed by the
check and must be replayed). Depth/complexity are 0 when the
body was too large or unparseable; the collected bytes are
empty on a read error.
Trait Implementations§
Source§impl Clone for GraphQLChecker
impl Clone for GraphQLChecker
Source§fn clone(&self) -> GraphQLChecker
fn clone(&self) -> GraphQLChecker
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for GraphQLChecker
impl RefUnwindSafe for GraphQLChecker
impl Send for GraphQLChecker
impl Sync for GraphQLChecker
impl Unpin for GraphQLChecker
impl UnwindSafe for GraphQLChecker
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§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