Mountain/IPC/WindServiceHandlers/Configuration/
Get.rs1#![allow(unused_variables, dead_code, unused_imports)]
2
3use std::sync::Arc;
6
7use serde_json::Value;
8
9use crate::{RunTime::ApplicationRunTime::ApplicationRunTime, dev_log};
10
11pub async fn Fn(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
12 use CommonLibrary::{
13 Configuration::{
14 ConfigurationProvider::ConfigurationProvider,
15 DTO::ConfigurationOverridesDTO::ConfigurationOverridesDTO,
16 },
17 Environment::Requires::Requires,
18 };
19
20 let key = Arguments
21 .get(0)
22 .ok_or("Missing configuration key".to_string())?
23 .as_str()
24 .ok_or("Configuration key must be a string".to_string())?;
25
26 let provider:Arc<dyn ConfigurationProvider> = RunTime.Environment.Require();
27
28 let value = provider
29 .GetConfigurationValue(Some(key.to_string()), ConfigurationOverridesDTO::default())
30 .await
31 .map_err(|Error| format!("Failed to get configuration: {}", Error))?;
32
33 dev_log!("config", "get: {} = {:?}", key, value);
34
35 Ok(value)
36}