From 36f2270f1885c57e2f6c3a8f3de9cb9a2bfd0d2f Mon Sep 17 00:00:00 2001 From: DanCodes Date: Fri, 7 Feb 2025 12:43:03 +0000 Subject: [PATCH] refactor(webhooks): pass trigger to other webhook events --- crates/service/src/runner.rs | 44 +++++++++++++------ .../service/src/settings/webhooks/discord.rs | 8 ++-- .../service/src/settings/webhooks/manager.rs | 8 ++-- 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/crates/service/src/runner.rs b/crates/service/src/runner.rs index ab962472..ea7afcd2 100644 --- a/crates/service/src/runner.rs +++ b/crates/service/src/runner.rs @@ -135,17 +135,29 @@ impl PulseRunner { sify(&processed) ); - self.webhooks - .add_event(EventType::Processed, None, &processed) - .await; + for ev in &processed { + self.webhooks + .add_event( + EventType::Processed, + Some(ev.event_source.clone()), + &[ev.file_path.clone()], + ) + .await; + } } if !retrying.is_empty() { warn!("retrying {} file{}", retrying.len(), sify(&retrying)); - self.webhooks - .add_event(EventType::Retrying, None, &retrying) - .await; + for ev in &retrying { + self.webhooks + .add_event( + EventType::Retrying, + Some(ev.event_source.clone()), + &[ev.file_path.clone()], + ) + .await; + } } if !failed.is_empty() { @@ -155,9 +167,15 @@ impl PulseRunner { sify(&failed) ); - self.webhooks - .add_event(EventType::Error, None, &failed) - .await; + for ev in &failed { + self.webhooks + .add_event( + EventType::Failed, + Some(ev.event_source.clone()), + &[ev.file_path.clone()], + ) + .await; + } } Ok(()) @@ -166,7 +184,7 @@ impl PulseRunner { async fn process_events( &self, evs: &mut [ScanEvent], - ) -> anyhow::Result<(Vec, Vec, Vec)> { + ) -> anyhow::Result<(Vec, Vec, Vec)> { let mut failed_ids = vec![]; let trigger_settings = &self.settings.triggers; @@ -225,7 +243,7 @@ impl PulseRunner { if ev.failed_times >= self.settings.opts.max_retries { ev.process_status = ProcessStatus::Failed.into(); ev.next_retry_at = None; - failed.push(conn.save_changes(ev)?.file_path.clone()); + failed.push(conn.save_changes(ev)?); } else { let next_retry = chrono::Utc::now().naive_utc() + chrono::Duration::seconds(2_i64.pow(ev.failed_times as u32 + 1)); @@ -233,12 +251,12 @@ impl PulseRunner { ev.process_status = ProcessStatus::Retry.into(); ev.next_retry_at = Some(next_retry); - retrying.push(conn.save_changes(ev)?.file_path.clone()); + retrying.push(conn.save_changes(ev)?); } } else { ev.process_status = ProcessStatus::Complete.into(); ev.processed_at = Some(chrono::Utc::now().naive_utc()); - succeeded.push(conn.save_changes(ev)?.file_path.clone()); + succeeded.push(conn.save_changes(ev)?); } } diff --git a/crates/service/src/settings/webhooks/discord.rs b/crates/service/src/settings/webhooks/discord.rs index a7dc0b97..a09aa082 100644 --- a/crates/service/src/settings/webhooks/discord.rs +++ b/crates/service/src/settings/webhooks/discord.rs @@ -68,10 +68,10 @@ impl DiscordWebhook { for (event, trigger, files) in batch { let color = match event { - EventType::New => 6_061_450, // grey - EventType::Found => 52084, // green - EventType::Error => 16_711_680, // red - EventType::Processed => 39129, // blue + EventType::New => 6_061_450, // grey + EventType::Found => 52084, // green + EventType::Failed => 16_711_680, // red + EventType::Processed => 39129, // blue EventType::Retrying | EventType::HashMismatch => 16_776_960, }; diff --git a/crates/service/src/settings/webhooks/manager.rs b/crates/service/src/settings/webhooks/manager.rs index 56fa15db..1b312840 100644 --- a/crates/service/src/settings/webhooks/manager.rs +++ b/crates/service/src/settings/webhooks/manager.rs @@ -19,8 +19,8 @@ pub enum EventType { Retrying = 3, /// Processed event Processed = 4, - /// Error event - Error = 5, + /// Failed event + Failed = 5, } impl Display for EventType { @@ -29,7 +29,7 @@ impl Display for EventType { Self::New => "NEW", Self::Retrying => "RETRY", Self::Found => "FOUND", - Self::Error => "ERROR", + Self::Failed => "FAILED", Self::Processed => "PROCESSED", Self::HashMismatch => "HASH MISMATCH", }; @@ -44,7 +44,7 @@ impl EventType { Self::New => "added", Self::Found => "found", Self::Retrying => "retrying", - Self::Error => "failed", + Self::Failed => "failed", Self::Processed => "processed", Self::HashMismatch => "mismatched", }