aboutsummaryrefslogtreecommitdiff
path: root/internal/server/server.go
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-20 16:55:51 -0800
committerFuwn <[email protected]>2026-01-20 16:55:51 -0800
commit04a77a9fba6cf74fcf05b79e8aadce9acb99ce89 (patch)
treee97a22ec4d7ecba2b22a309b4b3e0f02013e869b /internal/server/server.go
parentfeat: Add SVG status badge endpoint (diff)
downloadkaze-04a77a9fba6cf74fcf05b79e8aadce9acb99ce89.tar.xz
kaze-04a77a9fba6cf74fcf05b79e8aadce9acb99ce89.zip
fix: Use wildcard path for badge endpoint to support .svg extension
Go's ServeMux doesn't support wildcards with extensions like {name}.svg, so use {name...} to capture the full path and strip .svg in the handler.
Diffstat (limited to 'internal/server/server.go')
-rw-r--r--internal/server/server.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/internal/server/server.go b/internal/server/server.go
index b835955..ace36f1 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -78,7 +78,8 @@ func New(cfg *config.Config, store *storage.Storage, sched *monitor.Scheduler, l
mux.HandleFunc("GET /api/health", s.handleAPIHealth)
// Badge endpoint - always public (for embedding in READMEs, docs)
- mux.HandleFunc("GET /api/badge/{name}.svg", s.handleAPIBadge)
+ // Note: {name...} captures the rest of the path including .svg extension
+ mux.HandleFunc("GET /api/badge/{name...}", s.handleAPIBadge)
// Full page data endpoint - public if refresh_mode=api, otherwise follows api.access
if cfg.Display.RefreshMode == "api" {
@@ -659,6 +660,9 @@ func (s *Server) handleAPIBadge(w http.ResponseWriter, r *http.Request) {
return
}
+ // Strip .svg extension if present
+ name = strings.TrimSuffix(name, ".svg")
+
// Get monitor stats
stats, err := s.storage.GetMonitorStats(r.Context(), name)
if err != nil {