Skip to main content

ao_core/
parity_notifier_resolution.rs

1//! Notifier target resolution (ported from `packages/core/src/notifier.ts`).
2//!
3//! Parity status: test-only.
4//!
5//! Not wired into the ao-rs runtime. Consumed only by
6//! `tests/parity_utils_parity_test.rs`.
7
8use std::collections::HashMap;
9
10#[derive(Debug, Clone, PartialEq, Eq)]
11pub struct NotifierConfig {
12    pub plugin: String,
13}
14
15#[derive(Debug, Clone, PartialEq, Eq)]
16pub struct ResolvedNotifierTarget {
17    pub reference: String,
18    pub plugin_name: String,
19}
20
21pub fn resolve_notifier_target(
22    notifiers: Option<&HashMap<String, NotifierConfig>>,
23    reference: &str,
24) -> ResolvedNotifierTarget {
25    let plugin_name = notifiers
26        .and_then(|m| m.get(reference))
27        .map(|c| c.plugin.clone())
28        .unwrap_or_else(|| reference.to_string());
29
30    ResolvedNotifierTarget {
31        reference: reference.to_string(),
32        plugin_name,
33    }
34}