fixed benchmark
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-04-20 16:24:48 +10:00
parent 8ccf5a7009
commit aa0d8099c7
5 changed files with 156 additions and 8 deletions
+24 -1
View File
@@ -1,6 +1,7 @@
package router
import (
"encoding/json"
"io/fs"
"log/slog"
"net/http"
@@ -104,13 +105,14 @@ func New(logger *slog.Logger, database db.Database, buildTime string, sha1ver st
} else {
mux.Handle("/swagger/", middleware.CacheMiddleware(http.StripPrefix("/swagger/", http.FileServer(http.FS(swaggerSub)))))
}
swaggerRuntimeSpec := buildRuntimeSwaggerSpec(logger, swaggerSpec, settings.Values.Settings.BindDisableTLS)
mux.HandleFunc("/swagger", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/swagger/", http.StatusPermanentRedirect)
})
mux.Handle("/swagger.json", middleware.CacheMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write(swaggerSpec)
_, _ = w.Write(swaggerRuntimeSpec)
})))
// Register pprof handlers only when enabled, and gate them behind admin auth.
@@ -124,3 +126,24 @@ func New(logger *slog.Logger, database db.Database, buildTime string, sha1ver st
return middleware.NewLoggingMiddleware(logger, mux)
}
func buildRuntimeSwaggerSpec(logger *slog.Logger, baseSpec []byte, bindDisableTLS bool) []byte {
scheme := "https"
if bindDisableTLS {
scheme = "http"
}
var parsed map[string]any
if err := json.Unmarshal(baseSpec, &parsed); err != nil {
logger.Warn("failed to parse embedded swagger spec; serving original", "error", err)
return baseSpec
}
parsed["schemes"] = []string{scheme}
updated, err := json.Marshal(parsed)
if err != nil {
logger.Warn("failed to render runtime swagger spec; serving original", "error", err)
return baseSpec
}
return updated
}