From a9c924b433623165859bfac15b55b3c0ed1f8c79 Mon Sep 17 00:00:00 2001 From: Mubelotix Date: Tue, 5 Aug 2025 11:16:34 +0200 Subject: [PATCH] Turn url back into a setting --- crates/meilisearch/src/routes/webhooks.rs | 11 ++++++++--- crates/meilisearch/tests/tasks/webhook.rs | 12 +++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/crates/meilisearch/src/routes/webhooks.rs b/crates/meilisearch/src/routes/webhooks.rs index 996377240..9adad3284 100644 --- a/crates/meilisearch/src/routes/webhooks.rs +++ b/crates/meilisearch/src/routes/webhooks.rs @@ -61,9 +61,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) { #[serde(rename_all = "camelCase")] #[schema(rename_all = "camelCase")] pub(super) struct WebhookSettings { + #[schema(value_type = Option, example = "https://your.site/on-tasks-completed")] #[deserr(default, error = DeserrJsonError)] #[serde(default)] - url: Option, + url: Setting, #[schema(value_type = Option>, example = json!({"Authorization":"Bearer a-secret-token"}))] #[deserr(default, error = DeserrJsonError)] #[serde(default)] @@ -241,7 +242,11 @@ fn patch_webhook_inner( ) -> Result { let Webhook { url: old_url, mut headers } = old_webhook; - let url = new_webhook.url.unwrap_or(old_url); + let url = match new_webhook.url { + Setting::Set(url) => url, + Setting::NotSet => old_url, + Setting::Reset => return Err(MissingUrl(uuid.to_owned())), + }; match new_webhook.headers { Setting::Set(new_headers) => { @@ -369,7 +374,7 @@ async fn post_webhook( } let webhook = Webhook { - url: webhook_settings.url.ok_or(MissingUrl(uuid))?, + url: webhook_settings.url.set().ok_or(MissingUrl(uuid))?, headers: webhook_settings .headers .set() diff --git a/crates/meilisearch/tests/tasks/webhook.rs b/crates/meilisearch/tests/tasks/webhook.rs index 268a37e18..f457fb697 100644 --- a/crates/meilisearch/tests/tasks/webhook.rs +++ b/crates/meilisearch/tests/tasks/webhook.rs @@ -465,15 +465,13 @@ async fn create_and_patch() { "#); let (value, code) = server.patch_webhook(&uuid, json!({ "url": null })).await; - snapshot!(code, @"200 OK"); + snapshot!(code, @"400 Bad Request"); snapshot!(json_string!(value, { ".uuid" => "[uuid]" }), @r#" { - "uuid": "81ccb94c-74cf-4d40-8070-492055804693", - "isEditable": true, - "url": "https://example.com/hook", - "headers": { - "authorization2": "TOKEN" - } + "message": "The URL for the webhook `[uuid]` is missing.", + "code": "invalid_webhooks_url", + "type": "invalid_request", + "link": "https://docs.meilisearch.com/errors#invalid_webhooks_url" } "#); }