pub trait FilterPlugin: Send + Sync {
// Required methods
fn filter(
&self,
ctx: &RequestContext,
principal: &Principal,
candidates: &[UpstreamCandidate],
) -> Result<FilterOutput, FilterError>;
fn plugin_id(&self) -> Uuid;
fn plugin_name(&self) -> &str;
}Expand description
Filter plugin boundary for upstream candidate filtering and decision-making.
Filter plugins evaluate requests against custom criteria and decide which upstream candidates are acceptable. They have access to the request context, authenticated principal, and list of available upstream candidates, and return a filtered set of acceptable upstreams along with per-candidate reasoning.
Required Methods§
Sourcefn filter(
&self,
ctx: &RequestContext,
principal: &Principal,
candidates: &[UpstreamCandidate],
) -> Result<FilterOutput, FilterError>
fn filter( &self, ctx: &RequestContext, principal: &Principal, candidates: &[UpstreamCandidate], ) -> Result<FilterOutput, FilterError>
Filters upstream candidates based on request and principal.
Returns a FilterOutput containing the kept upstream IDs and per-candidate
reasons, or a FilterError if filtering fails.
Sourcefn plugin_name(&self) -> &str
fn plugin_name(&self) -> &str
Returns the human-readable plugin name.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".