From 985ee5466939eae48a627ba948b1bfa61410df36 Mon Sep 17 00:00:00 2001 From: JeremyLARDENOIS Date: Sat, 9 Aug 2025 13:52:38 +0200 Subject: [PATCH] refactor: move business logic into app * also move all at directory root crate * all actors are into lib directory * formatter is into system_monitor now --- node_notifier/Cargo.lock => Cargo.lock | 80 +++++++++---------- Cargo.toml | 10 +++ .../actors/discord_client}/Cargo.lock | 0 .../actors/discord_client}/Cargo.toml | 0 .../actors/discord_client}/src/lib.rs | 0 .../actors/system_monitor}/Cargo.lock | 0 .../actors/system_monitor}/Cargo.toml | 0 .../system_monitor/src}/alert_formatter.rs | 8 +- .../actors/system_monitor}/src/get_info.rs | 0 .../actors/system_monitor}/src/lib.rs | 1 + .../system_monitor}/src/resource_threshold.rs | 0 node_notifier/Cargo.toml | 12 --- node_notifier/src/app.rs | 2 - {node_notifier/src => src}/app/service.rs | 15 ++-- {node_notifier/src => src}/main.rs | 7 +- 15 files changed, 67 insertions(+), 68 deletions(-) rename node_notifier/Cargo.lock => Cargo.lock (96%) create mode 100644 Cargo.toml rename {discord_client => lib/actors/discord_client}/Cargo.lock (100%) rename {discord_client => lib/actors/discord_client}/Cargo.toml (100%) rename {discord_client => lib/actors/discord_client}/src/lib.rs (100%) rename {system_monitor => lib/actors/system_monitor}/Cargo.lock (100%) rename {system_monitor => lib/actors/system_monitor}/Cargo.toml (100%) rename {node_notifier/src/app => lib/actors/system_monitor/src}/alert_formatter.rs (93%) rename {system_monitor => lib/actors/system_monitor}/src/get_info.rs (100%) rename {system_monitor => lib/actors/system_monitor}/src/lib.rs (99%) rename {system_monitor => lib/actors/system_monitor}/src/resource_threshold.rs (100%) delete mode 100644 node_notifier/Cargo.toml delete mode 100644 node_notifier/src/app.rs rename {node_notifier/src => src}/app/service.rs (75%) rename {node_notifier/src => src}/main.rs (77%) diff --git a/node_notifier/Cargo.lock b/Cargo.lock similarity index 96% rename from node_notifier/Cargo.lock rename to Cargo.lock index b67b3cc..3573524 100644 --- a/node_notifier/Cargo.lock +++ b/Cargo.lock @@ -64,9 +64,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.29" +version = "1.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" dependencies = [ "shlex", ] @@ -261,9 +261,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "h2" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", @@ -280,9 +280,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" [[package]] name = "http" @@ -378,9 +378,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "base64", "bytes", @@ -521,9 +521,9 @@ dependencies = [ [[package]] name = "io-uring" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" dependencies = [ "bitflags", "cfg-if", @@ -641,9 +641,6 @@ version = "0.1.0" dependencies = [ "discord_client", "dotenvy", - "reqwest", - "serde", - "serde_json", "system_monitor", ] @@ -849,28 +846,28 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "once_cell", "rustls-pki-types", @@ -890,9 +887,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -901,9 +898,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -965,9 +962,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", @@ -995,9 +992,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -1007,12 +1004,12 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.5.10" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1125,9 +1122,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.46.1" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", @@ -1137,7 +1134,7 @@ dependencies = [ "pin-project-lite", "slab", "socket2", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1162,9 +1159,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -1542,7 +1539,7 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.3", ] [[package]] @@ -1563,10 +1560,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -1761,9 +1759,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..8cc22d2 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "node-notifier" +version = "0.1.0" +edition = "2024" + +[dependencies] +dotenvy = "0.15.7" +discord_client = { path = "lib/actors/discord_client" } +system_monitor = { path = "lib/actors/system_monitor" } + diff --git a/discord_client/Cargo.lock b/lib/actors/discord_client/Cargo.lock similarity index 100% rename from discord_client/Cargo.lock rename to lib/actors/discord_client/Cargo.lock diff --git a/discord_client/Cargo.toml b/lib/actors/discord_client/Cargo.toml similarity index 100% rename from discord_client/Cargo.toml rename to lib/actors/discord_client/Cargo.toml diff --git a/discord_client/src/lib.rs b/lib/actors/discord_client/src/lib.rs similarity index 100% rename from discord_client/src/lib.rs rename to lib/actors/discord_client/src/lib.rs diff --git a/system_monitor/Cargo.lock b/lib/actors/system_monitor/Cargo.lock similarity index 100% rename from system_monitor/Cargo.lock rename to lib/actors/system_monitor/Cargo.lock diff --git a/system_monitor/Cargo.toml b/lib/actors/system_monitor/Cargo.toml similarity index 100% rename from system_monitor/Cargo.toml rename to lib/actors/system_monitor/Cargo.toml diff --git a/node_notifier/src/app/alert_formatter.rs b/lib/actors/system_monitor/src/alert_formatter.rs similarity index 93% rename from node_notifier/src/app/alert_formatter.rs rename to lib/actors/system_monitor/src/alert_formatter.rs index 3981420..2b35dcb 100644 --- a/node_notifier/src/app/alert_formatter.rs +++ b/lib/actors/system_monitor/src/alert_formatter.rs @@ -1,4 +1,4 @@ -use system_monitor::{Severity,ThresholdViolation}; +use crate::{Severity, SystemMonitor, ThresholdViolation}; pub struct AlertFormatter; @@ -8,7 +8,7 @@ impl AlertFormatter { Severity::Warning => "⚠️", Severity::Critical => "🚨", }; - + let level = match violation.severity { Severity::Warning => "ALERTE", Severity::Critical => "CRITIQUE", @@ -38,7 +38,7 @@ impl AlertFormatter { } } - pub fn format_summary(&self, monitor: &system_monitor::SystemMonitor) -> String { + pub fn format_summary(&self, monitor: &SystemMonitor) -> String { let metrics = monitor.get_metrics(); let mut result = "📊 **Rapport Système**\n\n```\n".to_string(); @@ -51,4 +51,4 @@ impl AlertFormatter { result } -} \ No newline at end of file +} diff --git a/system_monitor/src/get_info.rs b/lib/actors/system_monitor/src/get_info.rs similarity index 100% rename from system_monitor/src/get_info.rs rename to lib/actors/system_monitor/src/get_info.rs diff --git a/system_monitor/src/lib.rs b/lib/actors/system_monitor/src/lib.rs similarity index 99% rename from system_monitor/src/lib.rs rename to lib/actors/system_monitor/src/lib.rs index c235dc5..f7ce3ef 100644 --- a/system_monitor/src/lib.rs +++ b/lib/actors/system_monitor/src/lib.rs @@ -4,6 +4,7 @@ use sysinfo::{Disks, System}; mod get_info; pub mod resource_threshold; +pub mod alert_formatter; #[derive(Debug, Clone)] pub struct ThresholdViolation { diff --git a/system_monitor/src/resource_threshold.rs b/lib/actors/system_monitor/src/resource_threshold.rs similarity index 100% rename from system_monitor/src/resource_threshold.rs rename to lib/actors/system_monitor/src/resource_threshold.rs diff --git a/node_notifier/Cargo.toml b/node_notifier/Cargo.toml deleted file mode 100644 index 855ac13..0000000 --- a/node_notifier/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "node-notifier" -version = "0.1.0" -edition = "2024" - -[dependencies] -dotenvy = "0.15.7" -reqwest = { version = "0.12.22", features = ["blocking", "json"] } -serde = "1.0.219" -serde_json = "1.0.140" -discord_client = { path = "../discord_client" } -system_monitor = { path = "../system_monitor" } diff --git a/node_notifier/src/app.rs b/node_notifier/src/app.rs deleted file mode 100644 index 6338804..0000000 --- a/node_notifier/src/app.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod alert_formatter; -pub mod service; diff --git a/node_notifier/src/app/service.rs b/src/app/service.rs similarity index 75% rename from node_notifier/src/app/service.rs rename to src/app/service.rs index fc0cdbd..f5e4d37 100644 --- a/node_notifier/src/app/service.rs +++ b/src/app/service.rs @@ -1,15 +1,16 @@ -use crate::app::alert_formatter; use discord_client::DiscordNotifier; - +use system_monitor::{SystemMonitor, alert_formatter::AlertFormatter}; pub struct Service { notifier: DiscordNotifier, - monitor: system_monitor::SystemMonitor, - formatter: alert_formatter::AlertFormatter, + monitor: SystemMonitor, + formatter: AlertFormatter, } -pub fn new(notifier: DiscordNotifier, monitor: system_monitor::SystemMonitor) -> Service { - let formatter = alert_formatter::AlertFormatter; - +pub fn new( + notifier: DiscordNotifier, + monitor: SystemMonitor, + formatter: AlertFormatter, +) -> Service { Service { notifier, monitor, diff --git a/node_notifier/src/main.rs b/src/main.rs similarity index 77% rename from node_notifier/src/main.rs rename to src/main.rs index f43e0ca..91f44fc 100644 --- a/node_notifier/src/main.rs +++ b/src/main.rs @@ -2,7 +2,9 @@ use discord_client::DiscordNotifier; use dotenvy::dotenv; use system_monitor::SystemMonitor; -mod app; +mod app { + pub mod service; +} fn main() { dotenv().ok(); @@ -16,7 +18,8 @@ fn main() { let monitor = SystemMonitor::new(system_monitor::resource_threshold::get_default_resource_thresholds()); + let formatter = system_monitor::alert_formatter::AlertFormatter; - let service = app::service::new(notifier, monitor); + let service = app::service::new(notifier, monitor, formatter); service.run(); }