Skip to main content

routee_compass/plugin/input/default/inject/
inject_builder.rs

1use super::inject_plugin_config::InjectPluginConfig;
2use crate::plugin::input::{InputPlugin, InputPluginBuilder};
3use routee_compass_core::config::CompassConfigurationError;
4use std::sync::Arc;
5
6pub struct InjectPluginBuilder {}
7
8impl InputPluginBuilder for InjectPluginBuilder {
9    fn build(
10        &self,
11        parameters: &serde_json::Value,
12    ) -> Result<Arc<dyn InputPlugin>, CompassConfigurationError> {
13        let config: InjectPluginConfig = serde_json::from_value(parameters.clone())?;
14        let plugin = config.build().map_err(|e| {
15            CompassConfigurationError::UserConfigurationError(format!(
16                "failed to build inject plugin from configuration: {e}"
17            ))
18        })?;
19        Ok(Arc::new(plugin))
20    }
21}