pub struct SetVarsPlugin {
vars: Vec<VarRule>,
}Expand description
Evaluates every rule in order and writes each result into
context.message[name] as a string. Later rules see earlier results
($msg_<name>), so rules can build on each other.
Fields§
§vars: Vec<VarRule>Implementations§
Source§impl SetVarsPlugin
impl SetVarsPlugin
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; every regex and JSONPath is compiled here so mistakes fail policy compilation, not requests.
Accepted keys:
vars(array, required, non-empty), each entry:name(string, required): message key; readable downstream as$msg_<name>/{{message.<name>}}. Letters, digits,_,-,..from(string): source template —$uri,$http_<h>,$arg_<q>,$cookie_<c>,$msg_<k>, or{{request.path}}-style references. Required unlessjson_pathis set (then defaults to the request body).json_path(string): RFC 9535 JSONPath applied tofromparsed as JSON. One scalar node → its text; one object/array → its JSON text; several nodes → a JSON array text; none →default.regex(string): applied afterjson_path;group(integer or capture name, default1;0= whole match) selects the value.default(string): fallback when nothing matches.
type: set-vars
config:
vars:
- { name: user, from: $uri, regex: '^/hello/([^/]+)', default: stranger }
- { name: tenant, from: $http_x_tenant }
- { name: order_id, json_path: $.order.id }Trait Implementations§
Source§impl Debug for SetVarsPlugin
impl Debug for SetVarsPlugin
Source§impl Plugin for SetVarsPlugin
impl Plugin for SetVarsPlugin
Source§fn plugin_type(&self) -> &str
fn plugin_type(&self) -> &str
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Context,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Context,
) -> Pin<Box<dyn Future<Output = Result<PluginOutput, PluginExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Executes the plugin logic against the request/response context. Read more
Source§fn reads_response_body(&self) -> bool
fn reads_response_body(&self) -> bool
Whether this configured instance reads
context.response.body. Read moreSource§fn cache_target(&self) -> Option<CacheTarget>
fn cache_target(&self) -> Option<CacheTarget>
The cache backend this node writes to, if it is a
proxy-cache half. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for SetVarsPlugin
impl !UnwindSafe for SetVarsPlugin
impl Freeze for SetVarsPlugin
impl Send for SetVarsPlugin
impl Sync for SetVarsPlugin
impl Unpin for SetVarsPlugin
impl UnsafeUnpin for SetVarsPlugin
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