// Package docs serves the human-facing API documentation: the OpenAPI // document and a ReDoc rendering of it. The spec is embedded in the binary // (see package apispec) so the documentation needs no external files or a // separate server. package docs import ( "net/http" apispec "predictor-refactored/api" ) // redocHTML renders the embedded spec with ReDoc loaded from a CDN. const redocHTML = ` stratoflights-predictor API ` // Handler serves the documentation endpoints. type Handler struct{} // New returns a docs Handler. func New() *Handler { return &Handler{} } // Register installs GET /docs and GET /openapi.yaml on mux. func (h *Handler) Register(mux *http.ServeMux) { mux.HandleFunc("GET /openapi.yaml", h.spec) mux.HandleFunc("GET /docs", h.redoc) } func (h *Handler) spec(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "application/yaml") _, _ = w.Write(apispec.Spec) } func (h *Handler) redoc(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf-8") _, _ = w.Write([]byte(redocHTML)) }