From e746d809d9e0160eff0fc79d61b201026d8f57a9 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sun, 21 Jun 2026 22:04:43 -0400 Subject: [PATCH] Adding app module --- src/app.rs | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 56 insertions(+) create mode 100644 src/app.rs diff --git a/src/app.rs b/src/app.rs new file mode 100644 index 0000000..18d3c9f --- /dev/null +++ b/src/app.rs @@ -0,0 +1,55 @@ +/// Seconds to sleep after finising a task +pub const SECONDS_TO_SLEEP: u64 = 5; + + +pub const APP_NAME: &str = "catapult"; + +pub struct App { + pub api_url: String, + pub auth_url: String, + pub service_username: String, + pub service_passphrase: String, + pub twilio_config: textsender_models::config::auxiliary::TwilioConfig, +} + +// TODO: Change this to non-async at some point. +// Will require changes in other libraries +pub async fn load_app() -> Result { + use textsender_models::envy; + let auth_url_env = envy::environment::get_env("AUTH_URL").await; + let api_url_env = envy::environment::get_env("API_URL").await; + let service_username_env = envy::environment::get_env("SERVICE_USERNAME").await; + let service_passphrase_env = envy::environment::get_env("SERVICE_PASSPHRASE").await; + + let envs = vec![auth_url_env, api_url_env, service_username_env, service_passphrase_env]; + + let check_envs = |vs: &Vec| -> (bool, Option) { + for env in vs { + if env.value.is_empty() { + return (false, Some(format!("Key {} is not provided", env.key))); + } + } + (true, None) + }; + + let (envs_valid, reason) = check_envs(&envs); + + if envs_valid { + match textsender_models::config::auxiliary::load_config().await { + Ok(twilio_config) => { + Ok(App { + api_url: String::new(), + auth_url: String::new(), + service_username: String::new(), + service_passphrase: String::new(), + twilio_config: twilio_config + }) + } + Err(err) => { + Err(err) + } + } + } else { + Err(std::io::Error::other(reason.unwrap())) + } +} diff --git a/src/lib.rs b/src/lib.rs index a6db76a..b9acfe8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1 +1,2 @@ +pub mod app; pub mod version;