Skip to main content

actrpc_core/
interceptor_capabilities.rs

1use crate::{InterceptorInitialization, action::ActionKind};
2use actrpc_core_macros::DescribeValue;
3use serde::{Deserialize, Serialize};
4use std::collections::HashSet;
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, DescribeValue)]
7#[serde(deny_unknown_fields)]
8pub struct InterceptorCapabilities {
9    #[serde(default)]
10    pub supports_outbound: bool,
11
12    #[serde(default)]
13    pub supports_inbound: bool,
14
15    #[serde(default)]
16    pub supported_actions: HashSet<ActionKind>,
17}
18
19impl From<&InterceptorInitialization> for InterceptorCapabilities {
20    fn from(value: &InterceptorInitialization) -> Self {
21        Self {
22            supports_outbound: value.supports_outbound,
23            supports_inbound: value.supports_inbound,
24            supported_actions: value.actions.keys().cloned().collect(),
25        }
26    }
27}
28
29impl From<InterceptorInitialization> for InterceptorCapabilities {
30    fn from(value: InterceptorInitialization) -> Self {
31        Self {
32            supports_outbound: value.supports_outbound,
33            supports_inbound: value.supports_inbound,
34            supported_actions: value.actions.into_keys().collect(),
35        }
36    }
37}