amber_client/
app_config.rs

1use config::{Config, ConfigError, File};
2use serde::Deserialize;
3
4#[derive(Debug, Deserialize)]
5#[allow(unused)]
6pub struct AmberConfig {
7    pub base_url: String,
8}
9
10#[derive(Debug, Deserialize)]
11#[allow(unused)]
12pub struct ApiToken {
13    pub name: String,
14    pub psk: String,
15}
16
17#[derive(Debug, Deserialize)]
18#[allow(unused)]
19pub struct AppConfig {
20    pub amberconfig: AmberConfig,
21    pub userconfig: UserConfig,
22    pub apitoken: ApiToken,
23}
24
25#[derive(Debug, Deserialize)]
26#[allow(unused)]
27pub struct UserConfig {
28    pub state: String,
29}
30
31impl AppConfig {
32    pub async fn get(app_config_file: String) -> Result<Self, ConfigError> {
33        let config = Config::builder()
34            .add_source(File::with_name(&app_config_file))
35            .build()?;
36
37        config.try_deserialize()
38    }
39}