Skip to main content

Plugin

Trait Plugin 

Source
pub trait Plugin: Send + Sync {
    // Required methods
    fn plugin_type(&self) -> &str;
    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;
}
Expand description

Every plugin (native or scripted) implements this trait.

A plugin is a node in a compiled policy graph. The engine drives each node through execute and follows the node’s success or error port depending on the result.

Required Methods§

Source

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,

Executes the plugin logic against the request/response context.

Contract:

  • ctx is taken by value: the plugin owns the Context for the duration of the call and must hand it back in either outcome — inside PluginOutput on success, or inside PluginExecutionError on failure. The context is never lost.
  • named_inputs carries values that upstream nodes published as named_outputs, keyed by name; most plugins ignore it.
  • On Ok, the graph engine routes the returned context through the node’s success port. On Err, the PluginExecutionError carries both the context and a GatewayError, letting the engine record the error and continue through the node’s error port (typically toward an error-handler node) instead of aborting the request.

Implementors§

Source§

impl Plugin for AclPlugin

Source§

impl Plugin for ApiBreakerPlugin

Source§

impl Plugin for AttachConsumerLabelPlugin

Source§

impl Plugin for AuthzCasbinPlugin

Source§

impl Plugin for AuthzCasdoorPlugin

Source§

impl Plugin for AuthzKeycloakPlugin

Source§

impl Plugin for AwsLambdaPlugin

Source§

impl Plugin for AzureFunctionsPlugin

Source§

impl Plugin for BasicAuthPlugin

Source§

impl Plugin for BodyTransformerPlugin

Source§

impl Plugin for BrotliPlugin

Source§

impl Plugin for CasAuthPlugin

Source§

impl Plugin for ClickhouseLoggerPlugin

Source§

impl Plugin for ClientPlugin

Source§

impl Plugin for ConsumerRestrictionPlugin

Source§

impl Plugin for CorsPlugin

Source§

impl Plugin for CsrfPlugin

Source§

impl Plugin for DataMaskPlugin

Source§

impl Plugin for DatadogPlugin

Source§

impl Plugin for DegraphqlPlugin

Source§

impl Plugin for DingtalkAuthPlugin

Source§

impl Plugin for EchoPlugin

Source§

impl Plugin for ElasticsearchLoggerPlugin

Source§

impl Plugin for ErrorHandlerPlugin

Source§

impl Plugin for ErrorLogLoggerPlugin

Source§

impl Plugin for ErrorPagePlugin

Source§

impl Plugin for ExitTransformerPlugin

Source§

impl Plugin for FaultInjectionPlugin

Source§

impl Plugin for FeishuAuthPlugin

Source§

impl Plugin for FileLoggerPlugin

Source§

impl Plugin for ForwardAuthPlugin

Source§

impl Plugin for GoogleCloudLoggingPlugin

Source§

impl Plugin for GzipPlugin

Source§

impl Plugin for HmacAuthPlugin

Source§

impl Plugin for HttpLoggerPlugin

Source§

impl Plugin for IpRestrictionPlugin

Source§

impl Plugin for JweDecryptPlugin

Source§

impl Plugin for JwtAuthPlugin

Source§

impl Plugin for KeyAuthPlugin

Source§

impl Plugin for LagoPlugin

Source§

impl Plugin for LdapAuthPlugin

Source§

impl Plugin for LimitConnPlugin

Source§

impl Plugin for LimitCountPlugin

Source§

impl Plugin for ListenerPlugin

Source§

impl Plugin for LoggingPlugin

Source§

impl Plugin for LogglyPlugin

Source§

impl Plugin for LokiLoggerPlugin

Source§

impl Plugin for MockingPlugin

Source§

impl Plugin for MultiAuthPlugin

Source§

impl Plugin for OasValidatorPlugin

Source§

impl Plugin for OpaPlugin

Source§

impl Plugin for OpenFunctionPlugin

Source§

impl Plugin for OpenidConnectPlugin

Source§

impl Plugin for OpenTelemetryPlugin

Source§

impl Plugin for OpenWhiskPlugin

Source§

impl Plugin for PrometheusPlugin

Source§

impl Plugin for ProxyCachePlugin

Source§

impl Plugin for ProxyMirrorPlugin

Source§

impl Plugin for ProxyRewritePlugin

Source§

impl Plugin for RateLimitPlugin

Source§

impl Plugin for RealIpPlugin

Source§

impl Plugin for RedirectPlugin

Source§

impl Plugin for RefererRestrictionPlugin

Source§

impl Plugin for RequestIdPlugin

Source§

impl Plugin for RequestSizeLimitPlugin

Source§

impl Plugin for RequestValidationPlugin

Source§

impl Plugin for ResponseRewritePlugin

Source§

impl Plugin for ServerlessPostFunctionPlugin

Source§

impl Plugin for ServerlessPreFunctionPlugin

Source§

impl Plugin for SkywalkingPlugin

Source§

impl Plugin for SkywalkingLoggerPlugin

Source§

impl Plugin for SlsLoggerPlugin

Source§

impl Plugin for SplunkHecLoggingPlugin

Source§

impl Plugin for SyslogPlugin

Source§

impl Plugin for TcpLoggerPlugin

Source§

impl Plugin for TencentCloudClsPlugin

Source§

impl Plugin for TrafficLabelPlugin

Source§

impl Plugin for TrafficSplitPlugin

Source§

impl Plugin for UaRestrictionPlugin

Source§

impl Plugin for UdpLoggerPlugin

Source§

impl Plugin for UpstreamPlugin

Source§

impl Plugin for UriBlockerPlugin

Source§

impl Plugin for WolfRbacPlugin

Source§

impl Plugin for WorkflowPlugin

Source§

impl Plugin for ZipkinPlugin

Source§

impl Plugin for ScriptPlugin