Skip to main content

Mountain/IPC/WindServiceHandlers/Configuration/
Get.rs

1#![allow(unused_variables, dead_code, unused_imports)]
2
3//! Wire method: `configuration:get`.
4
5use 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}