package server import ( "time" "github.com/go-chi/chi/v5" chimw "github.com/go-chi/chi/v5/middleware" "github.com/prometheus/client_golang/prometheus/promhttp" ) // requestTimeout is the maximum duration for handling a request. const requestTimeout = 60 * time.Second // SetupRoutes configures all HTTP routes. func (s *Server) SetupRoutes() { s.router = chi.NewRouter() // Global middleware s.router.Use(chimw.Recoverer) s.router.Use(chimw.RequestID) s.router.Use(s.mw.Logging()) s.router.Use(s.mw.CORS()) s.router.Use(chimw.Timeout(requestTimeout)) // Health check s.router.Get("/health", s.handlers.HandleHealthCheck()) // API v1 routes s.router.Route("/api/v1", func(r chi.Router) { r.Get("/status", s.handlers.HandleStatus()) }) // Metrics endpoint (optional, with basic auth) if s.params.Config.MetricsUsername != "" { s.router.Group(func(r chi.Router) { r.Use(s.mw.MetricsAuth()) r.Get( "/metrics", promhttp.Handler().ServeHTTP, ) }) } }