use config::{ConfigError, Source};
use crate::runtime::config::ConfigurationPackage;
pub use config::Config;
#[derive(Debug, Clone)]
pub struct FabricConfigSource {
inner: ConfigurationPackage,
}
impl FabricConfigSource {
pub fn new(c: ConfigurationPackage) -> Self {
Self { inner: c }
}
}
impl Source for FabricConfigSource {
fn clone_into_box(&self) -> Box<dyn Source + Send + Sync> {
Box::new(self.clone())
}
fn collect(&self) -> Result<config::Map<String, config::Value>, ConfigError> {
let uri_origion = String::from("fabric source");
let mut res = config::Map::new();
let settings = self.inner.get_settings();
settings.sections.iter().for_each(|section| {
let section_name = section.name.to_string();
section.parameters.iter().for_each(|p| {
let param_name = p.name.to_string();
let param_val = p.value.to_string();
#[cfg(feature = "tracing")]
tracing::debug!(
"Section: {} Param: {} Val: {}",
section_name,
param_name,
param_val
);
let val =
config::Value::new(Some(&uri_origion), config::ValueKind::String(param_val));
res.insert(section_name.clone() + "." + ¶m_name, val);
})
});
Ok(res)
}
}