Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/IPC/WindServiceHandlers/Configuration/
Get.rs

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