pub struct OasValidatorPlugin {
operations: Vec<CompiledOp>,
rejected_code: u16,
rejected_msg: Option<String>,
}Expand description
Validates requests against a compiled OpenAPI 3 spec.
Fields§
§operations: Vec<CompiledOp>§rejected_code: u16§rejected_msg: Option<String>Implementations§
Source§impl OasValidatorPlugin
impl OasValidatorPlugin
Sourcepub fn from_config(config: &HashMap<String, Value>) -> Result<Self, String>
pub fn from_config(config: &HashMap<String, Value>) -> Result<Self, String>
Builds the plugin from node config.
Accepted keys:
spec(object, required): the OpenAPI 3 document as an inline JSON object. Itspathsare walked and every operation’sapplication/jsonrequestBody schema is compiled and required parameters indexed. A non-objectspec, a malformedpaths, or an uncompilable schema fails here at config load.rejected_code(integer 400–599, default400): response status for rejected requests.rejected_msg(string): fixed message returned instead of the per-violation detail.
type: oas-validator
config:
rejected_code: 400
spec:
openapi: 3.0.0
info: { title: demo, version: "1.0" }
paths:
/users/{id}:
get:
parameters:
- { name: verbose, in: query, required: true, schema: { type: string } }
post:
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [name]
properties: { name: { type: string } }Sourcefn match_operation(&self, method: &str, path: &str) -> Option<&CompiledOp>
fn match_operation(&self, method: &str, path: &str) -> Option<&CompiledOp>
Finds the best-matching operation for a method + path: the matching operation with the most literal (non-templated) segments wins, so an exact path is preferred over a templated one.
Sourcefn reject(&self, ctx: Context, detail: String) -> PluginExecutionError
fn reject(&self, ctx: Context, detail: String) -> PluginExecutionError
Writes the rejection onto the response and returns the error that routes
the context through the node’s error port.
Trait Implementations§
Source§impl Plugin for OasValidatorPlugin
impl Plugin for OasValidatorPlugin
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Unique identifier for the plugin type (e.g., “proxy-rewrite”, “upstream”).
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context,
_named_inputs: &'life1 HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: Context,
_named_inputs: &'life1 HashMap<String, Value>,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Executes the plugin logic against the request/response context. Read more
Auto Trait Implementations§
impl Freeze for OasValidatorPlugin
impl !RefUnwindSafe for OasValidatorPlugin
impl Send for OasValidatorPlugin
impl Sync for OasValidatorPlugin
impl Unpin for OasValidatorPlugin
impl UnsafeUnpin for OasValidatorPlugin
impl !UnwindSafe for OasValidatorPlugin
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
Mutably borrows from an owned value. 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>
Converts
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>
Converts
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