ln.rs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //! Lightning Network common environment variables
  2. use std::env;
  3. use crate::config::Ln;
  4. // LN environment variables
  5. pub const ENV_LN_BACKEND: &str = "CDK_MINTD_LN_BACKEND";
  6. pub const ENV_LN_INVOICE_DESCRIPTION: &str = "CDK_MINTD_LN_INVOICE_DESCRIPTION";
  7. pub const ENV_LN_MIN_MINT: &str = "CDK_MINTD_LN_MIN_MINT";
  8. pub const ENV_LN_MAX_MINT: &str = "CDK_MINTD_LN_MAX_MINT";
  9. pub const ENV_LN_MIN_MELT: &str = "CDK_MINTD_LN_MIN_MELT";
  10. pub const ENV_LN_MAX_MELT: &str = "CDK_MINTD_LN_MAX_MELT";
  11. impl Ln {
  12. pub fn from_env(mut self) -> Self {
  13. // LnBackend
  14. if let Ok(backend_str) = env::var(ENV_LN_BACKEND) {
  15. if let Ok(backend) = backend_str.parse() {
  16. self.ln_backend = backend;
  17. } else {
  18. tracing::warn!("Unknown payment backend set in env var will attempt to use config file. {backend_str}");
  19. }
  20. }
  21. // Optional invoice description
  22. if let Ok(description) = env::var(ENV_LN_INVOICE_DESCRIPTION) {
  23. self.invoice_description = Some(description);
  24. }
  25. // Amount fields
  26. if let Ok(min_mint_str) = env::var(ENV_LN_MIN_MINT) {
  27. if let Ok(amount) = min_mint_str.parse::<u64>() {
  28. self.min_mint = amount.into();
  29. }
  30. }
  31. if let Ok(max_mint_str) = env::var(ENV_LN_MAX_MINT) {
  32. if let Ok(amount) = max_mint_str.parse::<u64>() {
  33. self.max_mint = amount.into();
  34. }
  35. }
  36. if let Ok(min_melt_str) = env::var(ENV_LN_MIN_MELT) {
  37. if let Ok(amount) = min_melt_str.parse::<u64>() {
  38. self.min_melt = amount.into();
  39. }
  40. }
  41. if let Ok(max_melt_str) = env::var(ENV_LN_MAX_MELT) {
  42. if let Ok(amount) = max_melt_str.parse::<u64>() {
  43. self.max_melt = amount.into();
  44. }
  45. }
  46. self
  47. }
  48. }