From 1a724191daff17e7e70d80153bab4fa48f8e7f06 Mon Sep 17 00:00:00 2001 From: ValDesign Date: Sun, 19 Apr 2026 17:42:04 +0200 Subject: [PATCH 1/2] fix(webhooks): remove flatten to avoid bson errors --- src/api/routes/webhooks/providers.rs | 12 ++++++------ src/domain/models/bot.rs | 3 +-- src/domain/models/vote.rs | 1 - src/openapi/schemas/vote.rs | 1 - src/services/webhooks.rs | 2 +- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/api/routes/webhooks/providers.rs b/src/api/routes/webhooks/providers.rs index 94b8ad75..3043b8f3 100644 --- a/src/api/routes/webhooks/providers.rs +++ b/src/api/routes/webhooks/providers.rs @@ -140,7 +140,7 @@ async fn handle_botlistme( ) -> ApiResult { let webhook_config = bot .webhooks_config - .webhooks + .providers .get("botlistme") .ok_or_else(|| { ApiError::WebhookError( @@ -181,7 +181,7 @@ async fn handle_dblist( bot: &Bot, authorization: Option<&str>, ) -> ApiResult { - let webhook_config = bot.webhooks_config.webhooks.get("dblist").ok_or_else(|| { + let webhook_config = bot.webhooks_config.providers.get("dblist").ok_or_else(|| { ApiError::WebhookError("Bot does not have webhook configured for dblist".to_string()) })?; @@ -215,7 +215,7 @@ async fn handle_dblist( async fn handle_discordlist(body_bytes: &[u8], bot: &Bot) -> ApiResult { let webhook_config = bot .webhooks_config - .webhooks + .providers .get("discordlist") .ok_or_else(|| { ApiError::WebhookError( @@ -252,7 +252,7 @@ async fn handle_discordplace( ) -> ApiResult { let webhook_config = bot .webhooks_config - .webhooks + .providers .get("discordplace") .ok_or_else(|| { ApiError::WebhookError( @@ -295,7 +295,7 @@ async fn handle_discordscom( ) -> ApiResult { let webhook_config = bot .webhooks_config - .webhooks + .providers .get("discordscom") .ok_or_else(|| { ApiError::WebhookError( @@ -341,7 +341,7 @@ async fn handle_topgg( bot: &Bot, headers: &HeaderMap, ) -> ApiResult { - let webhook_config = bot.webhooks_config.webhooks.get("topgg").ok_or_else(|| { + let webhook_config = bot.webhooks_config.providers.get("topgg").ok_or_else(|| { ApiError::WebhookError("Bot does not have webhook configured for top.gg".to_string()) })?; diff --git a/src/domain/models/bot.rs b/src/domain/models/bot.rs index b7831256..e78aea93 100644 --- a/src/domain/models/bot.rs +++ b/src/domain/models/bot.rs @@ -81,8 +81,7 @@ impl Bot { #[serde(rename_all = "camelCase")] pub struct WebhooksConfig { pub webhook_url: Option, - #[serde(flatten)] - pub webhooks: HashMap, + pub providers: HashMap, } #[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize, ApiComponent, JsonSchema)] diff --git a/src/domain/models/vote.rs b/src/domain/models/vote.rs index cc9807d5..8895f3c0 100644 --- a/src/domain/models/vote.rs +++ b/src/domain/models/vote.rs @@ -8,6 +8,5 @@ use serde::{Deserialize, Serialize}; pub struct Vote { pub bot_id: String, pub date: DateTime, - #[serde(flatten)] pub votes: HashMap, } diff --git a/src/openapi/schemas/vote.rs b/src/openapi/schemas/vote.rs index b5ae35a4..d7421e23 100644 --- a/src/openapi/schemas/vote.rs +++ b/src/openapi/schemas/vote.rs @@ -11,7 +11,6 @@ use crate::domain::models::Vote; pub struct VoteResponse { pub bot_id: String, pub date: String, - #[serde(flatten)] pub votes: HashMap, } diff --git a/src/services/webhooks.rs b/src/services/webhooks.rs index b90d7ef3..23364323 100644 --- a/src/services/webhooks.rs +++ b/src/services/webhooks.rs @@ -190,7 +190,7 @@ impl WebhooksService { webhook_secret: None, }; - if let Some(webhook_config) = bot.webhooks_config.webhooks.get(provider) { + if let Some(webhook_config) = bot.webhooks_config.providers.get(provider) { webhook.webhook_secret = Some(match &webhook_config.webhook_secret { Some(secret) if !secret.is_empty() => secret.clone(), _ => { From 196c2678f08164cc70371b3312db4820525883a2 Mon Sep 17 00:00:00 2001 From: ValDesign Date: Sun, 19 Apr 2026 17:42:55 +0200 Subject: [PATCH 2/2] chore(deps): bump tokio to 1.52.1 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 793c8106..05d120f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4515,9 +4515,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.0" +version = "1.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776" +checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" dependencies = [ "bytes", "libc", diff --git a/Cargo.toml b/Cargo.toml index 19e78e4b..b0d79eba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,7 +87,7 @@ s3 = { version = "0.1.27", optional = true, features = ["providers"] } schemars = { package = "apistos-schemars", version = "0.8.22", default-features = false } serde = { version = "1.0.228", default-features = false } serde_json = { version = "1.0.149", default-features = false } -tokio = "1.52.0" +tokio = "1.52.1" tracing = { version = "0.1.44", default-features = false } tracing-actix-web = { version = "0.7.21", default-features = false, features = [ "emit_event_on_error",