From 33e1423deef0f27ac729adfdb5d591c428774a45 Mon Sep 17 00:00:00 2001 From: JeremyLARDENOIS Date: Sun, 10 Aug 2025 16:47:37 +0200 Subject: [PATCH] refactor: implement configurator --- src/configurator.rs | 28 ++++++++++++++++++++++++++++ src/main.rs | 26 +++----------------------- 2 files changed, 31 insertions(+), 23 deletions(-) create mode 100644 src/configurator.rs diff --git a/src/configurator.rs b/src/configurator.rs new file mode 100644 index 0000000..c40bafe --- /dev/null +++ b/src/configurator.rs @@ -0,0 +1,28 @@ +use discord_client::DiscordNotifier; +use dotenvy::dotenv; +use system_monitor::SystemMonitor; + +use crate::{actors, adapters, app}; + +pub fn get_service() -> app::service::Service { + dotenv().ok(); + let notifier = DiscordNotifier::new( + std::env::var("DISCORD_WEBHOOK").expect("DISCORD_WEBHOOK environment variable not set"), + "System Monitor".to_string(), + "https://cdn.shopify.com/s/files/1/0262/1423/6212/files/Lord_of_the_Rings_eye_of_Sauron_-_Ghtic.com_-_Blog.png?v=1579680018".to_string(), + ); + let monitor = + SystemMonitor::new(system_monitor::resource_threshold::get_default_resource_thresholds()); + + let discord_adapter = + adapters::driven::for_sending_notification::discord_client::DiscordAdapter::new(notifier); + let system_monitor_adapter = + adapters::driven::for_monitoring_system::system_monitor::SystemMonitorAdapter::new(monitor); + let formatter = actors::driven::for_formatting_message::alert_formatter::AlertFormatter; + + app::service::new( + Box::new(discord_adapter), + Box::new(system_monitor_adapter), + Box::new(formatter), + ) +} diff --git a/src/main.rs b/src/main.rs index 93597a4..61237ba 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,3 @@ -use discord_client::DiscordNotifier; -use dotenvy::dotenv; -use system_monitor::SystemMonitor; use clap::{Parser, Subcommand}; mod app { @@ -24,6 +21,8 @@ mod actors { } } +mod configurator; + #[derive(Parser)] #[command(name = "node-notifier")] #[command(about = "A system monitoring and notification tool")] @@ -42,28 +41,9 @@ enum Commands { fn main() { let cli = Cli::parse(); - dotenv().ok(); - let notifier = DiscordNotifier::new( - std::env::var("DISCORD_WEBHOOK").expect("DISCORD_WEBHOOK environment variable not set"), - "System Monitor".to_string(), - "https://cdn.shopify.com/s/files/1/0262/1423/6212/files/Lord_of_the_Rings_eye_of_Sauron_-_Ghtic.com_-_Blog.png?v=1579680018".to_string(), - ); - let monitor = - SystemMonitor::new(system_monitor::resource_threshold::get_default_resource_thresholds()); + let service = configurator::get_service(); - let discord_adapter = - adapters::driven::for_sending_notification::discord_client::DiscordAdapter::new(notifier); - let system_monitor_adapter = - adapters::driven::for_monitoring_system::system_monitor::SystemMonitorAdapter::new(monitor); - let formatter = actors::driven::for_formatting_message::alert_formatter::AlertFormatter; - - let service = app::service::new( - Box::new(discord_adapter), - Box::new(system_monitor_adapter), - Box::new(formatter), - ); - match cli.command { Commands::Run => { if let Err(e) = service.alert_on_threshold_violation() {