actrpc_core/
interceptor_capabilities.rs1use 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}