package server import ( "log/slog" "net/http" "github.com/go-chi/chi/v5" "sourcecraft.dev/bigbes/huntsman/internal/domain/search" "sourcecraft.dev/bigbes/huntsman/internal/platform/health" "sourcecraft.dev/bigbes/huntsman/internal/server/middleware" ) // Routes wires every HTTP route the service exposes. // // Keeping route registration in one file makes it easy to audit the // public surface area without grepping every handler package. func Routes(logger *slog.Logger, h *health.Health, searchHandler *search.Handler) http.Handler { r := chi.NewRouter() r.Use(middleware.RequestID) r.Use(middleware.Recovery(logger)) r.Use(middleware.Logging(logger)) r.Get("/healthz", h.Healthz) r.Get("/readyz", h.Readyz) r.Get("/", indexHandler) searchHandler.RegisterRoutes(r) return r } // indexHandler advertises the unified OpenSearch document via a // tag, so browsers offer to add the engine when // the user visits the root URL. func indexHandler(w http.ResponseWriter, _ *http.Request) { const body = `
Multi-provider search router. Use prefixes:
ud <query> — Urban Dictionarygh <query> — GitHubsteam <query> — SteamEndpoints: /search?q=..., /providers,
/opensearch.xml,
/opensearch/{provider}.xml.