Skip to main content

cdk_mintd/env_vars/
fake_wallet.rs

1//! FakeWallet environment variables
2
3use std::env;
4
5use cdk::nuts::CurrencyUnit;
6
7use crate::config::{FakeWallet, FakeWalletKeysetRotation};
8
9// Fake Wallet environment variables
10pub const ENV_FAKE_WALLET_SUPPORTED_UNITS: &str = "CDK_MINTD_FAKE_WALLET_SUPPORTED_UNITS";
11pub const ENV_FAKE_WALLET_FEE_PERCENT: &str = "CDK_MINTD_FAKE_WALLET_FEE_PERCENT";
12pub const ENV_FAKE_WALLET_RESERVE_FEE_MIN: &str = "CDK_MINTD_FAKE_WALLET_RESERVE_FEE_MIN";
13pub const ENV_FAKE_WALLET_MIN_DELAY: &str = "CDK_MINTD_FAKE_WALLET_MIN_DELAY";
14pub const ENV_FAKE_WALLET_MAX_DELAY: &str = "CDK_MINTD_FAKE_WALLET_MAX_DELAY";
15/// JSON array of keyset rotations, e.g.:
16/// `[{"unit":"sat","version":"v1","input_fee_ppk":0,"expired":true}]`
17pub const ENV_FAKE_WALLET_KEYSET_ROTATIONS: &str = "CDK_MINTD_FAKE_WALLET_KEYSET_ROTATIONS";
18
19impl FakeWallet {
20    pub fn from_env(mut self) -> Self {
21        // Supported Units - expects comma-separated list
22        if let Ok(units_str) = env::var(ENV_FAKE_WALLET_SUPPORTED_UNITS) {
23            if let Ok(units) = units_str
24                .split(',')
25                .map(|s| s.trim().parse())
26                .collect::<Result<Vec<CurrencyUnit>, _>>()
27            {
28                self.supported_units = units;
29            }
30        }
31
32        if let Ok(fee_str) = env::var(ENV_FAKE_WALLET_FEE_PERCENT) {
33            if let Ok(fee) = fee_str.parse() {
34                self.fee_percent = fee;
35            }
36        }
37
38        if let Ok(reserve_fee_str) = env::var(ENV_FAKE_WALLET_RESERVE_FEE_MIN) {
39            if let Ok(reserve_fee) = reserve_fee_str.parse::<u64>() {
40                self.reserve_fee_min = reserve_fee.into();
41            }
42        }
43
44        if let Ok(min_delay_str) = env::var(ENV_FAKE_WALLET_MIN_DELAY) {
45            if let Ok(min_delay) = min_delay_str.parse() {
46                self.min_delay_time = min_delay;
47            }
48        }
49
50        if let Ok(max_delay_str) = env::var(ENV_FAKE_WALLET_MAX_DELAY) {
51            if let Ok(max_delay) = max_delay_str.parse() {
52                self.max_delay_time = max_delay;
53            }
54        }
55
56        if let Ok(rotations_str) = env::var(ENV_FAKE_WALLET_KEYSET_ROTATIONS) {
57            if let Ok(rotations) =
58                serde_json::from_str::<Vec<FakeWalletKeysetRotation>>(&rotations_str)
59            {
60                self.keyset_rotations = rotations;
61            }
62        }
63
64        self
65    }
66}