pub struct AvpPolicyEvaluator { /* private fields */ }Expand description
AVP-based policy evaluator implementing the PolicyEvaluator trait.
This wraps AvpClient and provides the standard PolicyEvaluator interface
for use with ValidationPipeline and #[derive(CodeMode)].
§Example
ⓘ
use pmcp_code_mode::{AvpClient, AvpConfig, AvpPolicyEvaluator, NoopPolicyEvaluator};
use std::sync::Arc;
// Runtime selection based on environment
let evaluator: Arc<dyn PolicyEvaluator> = match std::env::var("POLICY_STORE_ID") {
Ok(store_id) => Arc::new(AvpPolicyEvaluator::new(
AvpClient::new(AvpConfig { policy_store_id: store_id, region: None }).await?
)),
Err(_) => Arc::new(NoopPolicyEvaluator::new()),
};Implementations§
Trait Implementations§
Source§impl PolicyEvaluator for AvpPolicyEvaluator
impl PolicyEvaluator for AvpPolicyEvaluator
Source§fn evaluate_operation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
operation: &'life1 OperationEntity,
server_config: &'life2 ServerConfigEntity,
) -> Pin<Box<dyn Future<Output = Result<AuthorizationDecision, PolicyEvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn evaluate_operation<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
operation: &'life1 OperationEntity,
server_config: &'life2 ServerConfigEntity,
) -> Pin<Box<dyn Future<Output = Result<AuthorizationDecision, PolicyEvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Evaluate a GraphQL operation against policies.
Source§fn evaluate_script<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
script: &'life1 ScriptEntity,
server: &'life2 OpenAPIServerEntity,
) -> Pin<Box<dyn Future<Output = Result<AuthorizationDecision, PolicyEvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn evaluate_script<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
script: &'life1 ScriptEntity,
server: &'life2 OpenAPIServerEntity,
) -> Pin<Box<dyn Future<Output = Result<AuthorizationDecision, PolicyEvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Evaluate a JavaScript script against policies (OpenAPI Code Mode).
Default: denies all scripts (override for OpenAPI support).
Source§fn batch_evaluate<'life0, 'async_trait>(
&'life0 self,
requests: Vec<(OperationEntity, ServerConfigEntity)>,
) -> Pin<Box<dyn Future<Output = Result<Vec<AuthorizationDecision>, PolicyEvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn batch_evaluate<'life0, 'async_trait>(
&'life0 self,
requests: Vec<(OperationEntity, ServerConfigEntity)>,
) -> Pin<Box<dyn Future<Output = Result<Vec<AuthorizationDecision>, PolicyEvaluationError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Batch evaluation (default: sequential).
Source§fn is_configured(&self) -> bool
fn is_configured(&self) -> bool
Whether this evaluator is configured and ready.
Auto Trait Implementations§
impl Freeze for AvpPolicyEvaluator
impl !RefUnwindSafe for AvpPolicyEvaluator
impl Send for AvpPolicyEvaluator
impl Sync for AvpPolicyEvaluator
impl Unpin for AvpPolicyEvaluator
impl UnsafeUnpin for AvpPolicyEvaluator
impl !UnwindSafe for AvpPolicyEvaluator
Blanket Implementations§
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreCreates a shared type from an unshared type.