diff options
| author | Fuwn <[email protected]> | 2026-01-20 16:55:51 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-20 16:55:51 -0800 |
| commit | 04a77a9fba6cf74fcf05b79e8aadce9acb99ce89 (patch) | |
| tree | e97a22ec4d7ecba2b22a309b4b3e0f02013e869b /internal/server/server.go | |
| parent | feat: Add SVG status badge endpoint (diff) | |
| download | kaze-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.go | 6 |
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 { |