MCPcopy
hub / github.com/juanfont/headscale / SwaggerUI

Function SwaggerUI

swagger.go:15–82  ·  view source on GitHub ↗
(
	writer http.ResponseWriter,
	req *http.Request,
)

Source from the content-addressed store, hash-verified

13var apiV1JSON []byte
14
15func SwaggerUI(
16 writer http.ResponseWriter,
17 req *http.Request,
18) {
19 swaggerTemplate := template.Must(template.New("swagger").Parse(`
20<html>
21 <head>
22 <link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@3/swagger-ui.css">
23 <link rel="icon" href="/favicon.ico">
24 <script src="https://unpkg.com/swagger-ui-dist@3/swagger-ui-standalone-preset.js"></script>
25 <script src="https://unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js" charset="UTF-8"></script>
26 </head>
27 <body>
28 <div id="swagger-ui"></div>
29 <script>
30 window.addEventListener('load', (event) => {
31 const ui = SwaggerUIBundle({
32 url: "/swagger/v1/openapiv2.json",
33 dom_id: '#swagger-ui',
34 presets: [
35 SwaggerUIBundle.presets.apis,
36 SwaggerUIBundle.SwaggerUIStandalonePreset
37 ],
38 plugins: [
39 SwaggerUIBundle.plugins.DownloadUrl
40 ],
41 deepLinking: true,
42 // TODO(kradalby): Figure out why this does not work
43 // layout: "StandaloneLayout",
44 })
45 window.ui = ui
46 });
47 </script>
48 </body>
49</html>`))
50
51 var payload bytes.Buffer
52 if err := swaggerTemplate.Execute(&payload, struct{}{}); err != nil { //nolint:noinlineerr
53 log.Error().
54 Caller().
55 Err(err).
56 Msg("Could not render Swagger")
57
58 writer.Header().Set("Content-Type", "text/plain; charset=utf-8")
59 writer.WriteHeader(http.StatusInternalServerError)
60
61 _, err := writer.Write([]byte("Could not render Swagger"))
62 if err != nil {
63 log.Error().
64 Caller().
65 Err(err).
66 Msg("Failed to write response")
67 }
68
69 return
70 }
71
72 writer.Header().Set("Content-Type", "text/html; charset=utf-8")

Callers

nothing calls this directly

Calls 5

ExecuteMethod · 0.65
ErrorMethod · 0.45
HeaderMethod · 0.45
WriteHeaderMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected