mirror of
https://git.vectorsigma.ru/public/headscale.git
synced 2026-08-06 19:48:18 +00:00
serve the OpenAPI 3.0 spec at /swagger
Embed openapi/v1/headscale.yaml and point the Swagger UI at it, replacing the generated Swagger 2.0 document.
This commit is contained in:
@@ -588,7 +588,7 @@ func (h *Headscale) createRouter(apiV1 http.Handler) *chi.Mux {
|
||||
|
||||
// TODO(kristoffer): move swagger into a package
|
||||
r.Get("/swagger", headscale.SwaggerUI)
|
||||
r.Get("/swagger/v1/openapiv2.json", headscale.SwaggerAPIv1)
|
||||
r.Get("/swagger/v1/openapi.yaml", headscale.SwaggerAPIv1)
|
||||
|
||||
r.Post("/verify", h.VerifyHandler)
|
||||
|
||||
|
||||
10
swagger.go
10
swagger.go
@@ -9,8 +9,8 @@ import (
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
//go:embed gen/openapiv2/headscale/v1/headscale.swagger.json
|
||||
var apiV1JSON []byte
|
||||
//go:embed openapi/v1/headscale.yaml
|
||||
var apiV1Spec []byte
|
||||
|
||||
func SwaggerUI(
|
||||
writer http.ResponseWriter,
|
||||
@@ -29,7 +29,7 @@ func SwaggerUI(
|
||||
<script>
|
||||
window.addEventListener('load', (event) => {
|
||||
const ui = SwaggerUIBundle({
|
||||
url: "/swagger/v1/openapiv2.json",
|
||||
url: "/swagger/v1/openapi.yaml",
|
||||
dom_id: '#swagger-ui',
|
||||
presets: [
|
||||
SwaggerUIBundle.presets.apis,
|
||||
@@ -85,10 +85,10 @@ func SwaggerAPIv1(
|
||||
writer http.ResponseWriter,
|
||||
req *http.Request,
|
||||
) {
|
||||
writer.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
writer.Header().Set("Content-Type", "application/yaml; charset=utf-8")
|
||||
writer.WriteHeader(http.StatusOK)
|
||||
|
||||
if _, err := writer.Write(apiV1JSON); err != nil { //nolint:noinlineerr
|
||||
if _, err := writer.Write(apiV1Spec); err != nil { //nolint:noinlineerr
|
||||
log.Error().
|
||||
Caller().
|
||||
Err(err).
|
||||
|
||||
Reference in New Issue
Block a user