From 41b7b78b7487b028cc829131aaeaafca70d0f14e Mon Sep 17 00:00:00 2001 From: phoenix Date: Tue, 7 Jul 2026 14:50:39 -0400 Subject: [PATCH 1/4] Code refactoring --- src/app.rs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/app.rs b/src/app.rs index 7d840e7..d0e29af 100644 --- a/src/app.rs +++ b/src/app.rs @@ -20,13 +20,13 @@ pub fn load_app() -> Result { let service_passphrase_env = envy::environment::get_env("SERVICE_PASSPHRASE"); let envs = vec![ - api_url_env, - auth_url_env, - service_username_env, - service_passphrase_env, + &api_url_env, + &auth_url_env, + &service_username_env, + &service_passphrase_env, ]; - let check_envs = |vs: &Vec| -> (bool, Option) { + let check_envs = |vs: &Vec<&envy::EnvVar>| -> (bool, Option) { for env in vs { if env.value.is_empty() { return (false, Some(format!("Key {} is not provided", env.key))); @@ -36,19 +36,25 @@ pub fn load_app() -> Result { }; let (envs_valid, reason) = check_envs(&envs); - if envs_valid { + let auth_url: String = auth_url_env.value; + let api_url: String = api_url_env.value; + let service_username: String = service_username_env.value; + let service_passphrase: String = service_passphrase_env.value; match textsender_models::config::auxiliary::load_config() { Ok(twilio_config) => Ok(App { - api_url: envs[0].value.clone(), - auth_url: envs[1].value.clone(), - service_username: envs[2].value.clone(), - service_passphrase: envs[3].value.clone(), + api_url, + auth_url, + service_username, + service_passphrase, twilio_config, }), Err(err) => Err(err), } } else { - Err(std::io::Error::other(reason.unwrap())) + match reason { + Some(reason) => Err(std::io::Error::other(reason)), + None => Err(std::io::Error::other("No reason found")), + } } } -- 2.47.3 From 96fd175465c8e4e7c1fdd1d5c9f6bf27f50955ff Mon Sep 17 00:00:00 2001 From: phoenix Date: Tue, 7 Jul 2026 15:16:53 -0400 Subject: [PATCH 2/4] Removing clone() usage --- src/main.rs | 16 ++++++++++------ src/service/auth.rs | 2 +- src/service/contact.rs | 4 ++-- src/service/core.rs | 28 ++++++++++++++-------------- src/service/event.rs | 4 ++-- src/service/mer.rs | 4 ++-- src/service/message.rs | 4 ++-- src/service/queue.rs | 4 ++-- src/service/scheduler.rs | 4 ++-- 9 files changed, 37 insertions(+), 33 deletions(-) diff --git a/src/main.rs b/src/main.rs index eb826ff..d9479b8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ async fn main() -> Result<(), Box> { } let app = match catapult::app::load_app() { - Ok(app) => app, + Ok(app) => std::sync::Arc::new(app), Err(err) => { eprintln!("Error: {err:?}"); std::process::exit(-1); @@ -16,9 +16,12 @@ async fn main() -> Result<(), Box> { println!("App: {app:?}"); - let auth = catapult::service::auth::Auth { app: app.clone() }; + // let auth = catapult::service::auth::Auth { app: app.clone() }; + let auth = catapult::service::auth::Auth { + app: std::sync::Arc::clone(&app), + }; let token = match auth.get_token().await { - Ok(token) => token, + Ok(token) => std::sync::Arc::new(token), Err(err) => { eprintln!("Error getting token"); eprintln!("Error: {err:?}"); @@ -27,8 +30,8 @@ async fn main() -> Result<(), Box> { }; let mut svc = catapult::service::core::Service { - app: app.clone(), - token, + app: std::sync::Arc::clone(&app), + token: std::sync::Arc::clone(&token), }; loop { @@ -36,7 +39,8 @@ async fn main() -> Result<(), Box> { match auth.get_refresh_token(&svc.token).await { Ok(refresh) => { println!("Refresh token: {refresh:?}"); - svc.token = refresh; + let refreshed = std::sync::Arc::new(refresh); + svc.token = refreshed; } Err(err) => { eprintln!("Error: {err:?}"); diff --git a/src/service/auth.rs b/src/service/auth.rs index 52ec5ec..510046e 100644 --- a/src/service/auth.rs +++ b/src/service/auth.rs @@ -1,5 +1,5 @@ pub struct Auth { - pub app: crate::app::App, + pub app: std::sync::Arc, } impl Auth { diff --git a/src/service/contact.rs b/src/service/contact.rs index b452b2e..9220615 100644 --- a/src/service/contact.rs +++ b/src/service/contact.rs @@ -1,6 +1,6 @@ pub struct Contact { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Contact { diff --git a/src/service/core.rs b/src/service/core.rs index 195bf88..659e4d4 100644 --- a/src/service/core.rs +++ b/src/service/core.rs @@ -1,6 +1,6 @@ pub struct Service { - pub app: crate::app::App, - pub token: textsender_models::token::Login, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Service { @@ -10,8 +10,8 @@ impl Service { use textsender_models::message::scheduling::ScheduledMessage; let queue = super::queue::Queue { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let queue_item: Option = match queue.get_queue().await { Ok(item) => Some(item), @@ -37,8 +37,8 @@ impl Service { println!("Can schedule"); let events_req = super::event::Event { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let scheduled_message_id = queue_item.id; @@ -51,20 +51,20 @@ impl Service { }; let contacts = super::contact::Contact { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let messages = super::message::Message { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let sch_msg = super::scheduler::ScheduledMessage { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let mer_req = super::mer::MessageEventResponse { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let events = events.unwrap_or_default(); diff --git a/src/service/event.rs b/src/service/event.rs index c8f8456..29fb7ab 100644 --- a/src/service/event.rs +++ b/src/service/event.rs @@ -1,6 +1,6 @@ pub struct Event { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Event { diff --git a/src/service/mer.rs b/src/service/mer.rs index 1da1e9d..8a6ae5a 100644 --- a/src/service/mer.rs +++ b/src/service/mer.rs @@ -1,6 +1,6 @@ pub struct MessageEventResponse { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl MessageEventResponse { diff --git a/src/service/message.rs b/src/service/message.rs index e10d4ae..4374f10 100644 --- a/src/service/message.rs +++ b/src/service/message.rs @@ -1,6 +1,6 @@ pub struct Message { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Message { diff --git a/src/service/queue.rs b/src/service/queue.rs index b5c50d2..3b4167d 100644 --- a/src/service/queue.rs +++ b/src/service/queue.rs @@ -1,6 +1,6 @@ pub struct Queue { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Queue { diff --git a/src/service/scheduler.rs b/src/service/scheduler.rs index f7ebef9..72532a1 100644 --- a/src/service/scheduler.rs +++ b/src/service/scheduler.rs @@ -1,6 +1,6 @@ pub struct ScheduledMessage { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl ScheduledMessage { -- 2.47.3 From ecf95852426eb4b8270e9865f5d482e5ab49c58a Mon Sep 17 00:00:00 2001 From: phoenix Date: Tue, 7 Jul 2026 15:17:27 -0400 Subject: [PATCH 3/4] bump: catapult --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e051622..054e9d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -132,7 +132,7 @@ checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "catapult" -version = "0.3.2" +version = "0.3.3" dependencies = [ "reqwest", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 1f2b134..16d71b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "catapult" -version = "0.3.2" +version = "0.3.3" rust-version = "1.96.1" edition = "2024" -- 2.47.3 From 3a9ac2629134c6b04e67d8e71f78dc372400df92 Mon Sep 17 00:00:00 2001 From: phoenix Date: Tue, 7 Jul 2026 15:21:50 -0400 Subject: [PATCH 4/4] Code cleanup --- src/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index d9479b8..9782114 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,6 @@ async fn main() -> Result<(), Box> { println!("App: {app:?}"); - // let auth = catapult::service::auth::Auth { app: app.clone() }; let auth = catapult::service::auth::Auth { app: std::sync::Arc::clone(&app), }; -- 2.47.3