From 9e97efaba1afcf7388712883f05a0ab560292191 Mon Sep 17 00:00:00 2001 From: Arden Rasmussen Date: Fri, 7 Nov 2025 15:20:10 -0800 Subject: [PATCH] fix(api): Escape endpoint key in URL for raw APIs (#1381) --- api/raw.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/api/raw.go b/api/raw.go index f6cd2b41..28666b30 100644 --- a/api/raw.go +++ b/api/raw.go @@ -3,6 +3,7 @@ package api import ( "errors" "fmt" + "net/url" "time" "github.com/TwiN/gatus/v5/storage/store" @@ -25,7 +26,10 @@ func UptimeRaw(c *fiber.Ctx) error { default: return c.Status(400).SendString("Durations supported: 30d, 7d, 24h, 1h") } - key := c.Params("key") + key, err := url.QueryUnescape(c.Params("key")) + if err != nil { + return c.Status(400).SendString("invalid key encoding") + } uptime, err := store.Get().GetUptimeByKey(key, from, time.Now()) if err != nil { if errors.Is(err, common.ErrEndpointNotFound) { @@ -57,7 +61,10 @@ func ResponseTimeRaw(c *fiber.Ctx) error { default: return c.Status(400).SendString("Durations supported: 30d, 7d, 24h, 1h") } - key := c.Params("key") + key, err := url.QueryUnescape(c.Params("key")) + if err != nil { + return c.Status(400).SendString("invalid key encoding") + } responseTime, err := store.Get().GetAverageResponseTimeByKey(key, from, time.Now()) if err != nil { if errors.Is(err, common.ErrEndpointNotFound) {