mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-03-30 15:08:28 +00:00
42 lines
790 B
Go
42 lines
790 B
Go
package docs
|
|
|
|
import (
|
|
"embed"
|
|
httptemplate "html/template"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
const (
|
|
apiFile = "/static/openapi.yml"
|
|
indexFile = "template/index.tpl"
|
|
)
|
|
|
|
//go:embed static
|
|
var Static embed.FS
|
|
|
|
//go:embed template
|
|
var template embed.FS
|
|
|
|
func RegisterOpenAPIService(appName string, rtr *mux.Router) {
|
|
rtr.Handle(apiFile, http.FileServer(http.FS(Static)))
|
|
rtr.HandleFunc("/", handler(appName))
|
|
}
|
|
|
|
// handler returns an http handler that servers OpenAPI console for an OpenAPI spec at specURL.
|
|
func handler(title string) http.HandlerFunc {
|
|
t, _ := httptemplate.ParseFS(template, indexFile)
|
|
|
|
return func(w http.ResponseWriter, req *http.Request) {
|
|
//nolint:errcheck
|
|
t.Execute(w, struct {
|
|
Title string
|
|
URL string
|
|
}{
|
|
title,
|
|
apiFile,
|
|
})
|
|
}
|
|
}
|