use serde::{Deserialize, Serialize};
use super::propagation::TokenPropagatorConfig;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum TokenPropagationKind {
#[default]
Disabled,
Enabled,
}
#[derive(Debug, Clone, Deserialize, Default)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum TokenPropagation {
#[default]
Disabled,
Enabled {
#[serde(flatten)]
config: TokenPropagatorConfig,
},
}
impl TokenPropagation {
pub fn kind(&self) -> TokenPropagationKind {
match self {
Self::Disabled => TokenPropagationKind::Disabled,
Self::Enabled { .. } => TokenPropagationKind::Enabled,
}
}
pub fn config(&self) -> Option<&TokenPropagatorConfig> {
match self {
Self::Enabled { config } => Some(config),
Self::Disabled => None,
}
}
}