info.rs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. //! Info environment variables
  2. use std::env;
  3. use std::str::FromStr;
  4. use super::common::*;
  5. use crate::config::{Info, LoggingOutput};
  6. impl Info {
  7. pub fn from_env(mut self) -> Self {
  8. // Required fields
  9. if let Ok(url) = env::var(ENV_URL) {
  10. self.url = url;
  11. }
  12. if let Ok(host) = env::var(ENV_LISTEN_HOST) {
  13. self.listen_host = host;
  14. }
  15. if let Ok(port_str) = env::var(ENV_LISTEN_PORT) {
  16. if let Ok(port) = port_str.parse() {
  17. self.listen_port = port;
  18. }
  19. }
  20. if let Ok(signatory_url) = env::var(ENV_SIGNATORY_URL) {
  21. self.signatory_url = Some(signatory_url);
  22. }
  23. if let Ok(signatory_certs) = env::var(ENV_SIGNATORY_CERTS) {
  24. self.signatory_certs = Some(signatory_certs);
  25. }
  26. if let Ok(seed) = env::var(ENV_SEED) {
  27. self.seed = Some(seed);
  28. }
  29. if let Ok(mnemonic) = env::var(ENV_MNEMONIC) {
  30. self.mnemonic = Some(mnemonic);
  31. }
  32. if let Ok(cache_seconds_str) = env::var(ENV_CACHE_SECONDS) {
  33. if let Ok(seconds) = cache_seconds_str.parse() {
  34. self.http_cache.ttl = Some(seconds);
  35. }
  36. }
  37. if let Ok(extend_cache_str) = env::var(ENV_EXTEND_CACHE_SECONDS) {
  38. if let Ok(seconds) = extend_cache_str.parse() {
  39. self.http_cache.tti = Some(seconds);
  40. }
  41. }
  42. if let Ok(fee_str) = env::var(ENV_INPUT_FEE_PPK) {
  43. if let Ok(fee) = fee_str.parse() {
  44. self.input_fee_ppk = Some(fee);
  45. }
  46. }
  47. if let Ok(swagger_str) = env::var(ENV_ENABLE_SWAGGER) {
  48. if let Ok(enable) = swagger_str.parse() {
  49. self.enable_swagger_ui = Some(enable);
  50. }
  51. }
  52. // Logging configuration
  53. if let Ok(output_str) = env::var(ENV_LOGGING_OUTPUT) {
  54. if let Ok(output) = LoggingOutput::from_str(&output_str) {
  55. self.logging.output = output;
  56. } else {
  57. tracing::warn!(
  58. "Invalid logging output '{}' in environment variable. Valid options: stdout, file, both",
  59. output_str
  60. );
  61. }
  62. }
  63. if let Ok(console_level) = env::var(ENV_LOGGING_CONSOLE_LEVEL) {
  64. self.logging.console_level = Some(console_level);
  65. }
  66. if let Ok(file_level) = env::var(ENV_LOGGING_FILE_LEVEL) {
  67. self.logging.file_level = Some(file_level);
  68. }
  69. self.http_cache = self.http_cache.from_env();
  70. self
  71. }
  72. }