info.rs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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(mnemonic) = env::var(ENV_MNEMONIC) {
  27. self.mnemonic = Some(mnemonic);
  28. }
  29. if let Ok(cache_seconds_str) = env::var(ENV_CACHE_SECONDS) {
  30. if let Ok(seconds) = cache_seconds_str.parse() {
  31. self.http_cache.ttl = Some(seconds);
  32. }
  33. }
  34. if let Ok(extend_cache_str) = env::var(ENV_EXTEND_CACHE_SECONDS) {
  35. if let Ok(seconds) = extend_cache_str.parse() {
  36. self.http_cache.tti = Some(seconds);
  37. }
  38. }
  39. if let Ok(fee_str) = env::var(ENV_INPUT_FEE_PPK) {
  40. if let Ok(fee) = fee_str.parse() {
  41. self.input_fee_ppk = Some(fee);
  42. }
  43. }
  44. if let Ok(swagger_str) = env::var(ENV_ENABLE_SWAGGER) {
  45. if let Ok(enable) = swagger_str.parse() {
  46. self.enable_swagger_ui = Some(enable);
  47. }
  48. }
  49. // Logging configuration
  50. if let Ok(output_str) = env::var(ENV_LOGGING_OUTPUT) {
  51. if let Ok(output) = LoggingOutput::from_str(&output_str) {
  52. self.logging.output = output;
  53. } else {
  54. tracing::warn!(
  55. "Invalid logging output '{}' in environment variable. Valid options: stdout, file, both",
  56. output_str
  57. );
  58. }
  59. }
  60. if let Ok(console_level) = env::var(ENV_LOGGING_CONSOLE_LEVEL) {
  61. self.logging.console_level = Some(console_level);
  62. }
  63. if let Ok(file_level) = env::var(ENV_LOGGING_FILE_LEVEL) {
  64. self.logging.file_level = Some(file_level);
  65. }
  66. self.http_cache = self.http_cache.from_env();
  67. self
  68. }
  69. }