routee_compass/plugin/input/default/inject/
inject_builder.rs1use 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}