diff --git a/server/server.go b/server/server.go index e5d79f3b24eda..4005f4d9bbd60 100644 --- a/server/server.go +++ b/server/server.go @@ -390,7 +390,7 @@ func (a *ArgoCDServer) newHTTPServer(ctx context.Context, port int) *http.Server mustRegisterGWHandler(settings.RegisterSettingsServiceHandlerFromEndpoint, ctx, gwmux, endpoint, dOpts) mustRegisterGWHandler(project.RegisterProjectServiceHandlerFromEndpoint, ctx, gwmux, endpoint, dOpts) - swagger.ServeSwaggerUI(mux, "server", "/swagger-ui") + swagger.ServeSwaggerUI(mux, packr.NewBox("."), "/swagger-ui") // Dex reverse proxy and client app and OAuth2 login/callback a.registerDexHandlers(mux) diff --git a/util/swagger/swagger.go b/util/swagger/swagger.go index bf4d846e15b82..b8a3ca08c246d 100644 --- a/util/swagger/swagger.go +++ b/util/swagger/swagger.go @@ -1,20 +1,27 @@ package swagger import ( + "fmt" + "log" "net/http" "path" - "path/filepath" "github.com/go-openapi/runtime/middleware" + "github.com/gobuffalo/packr" ) // ServeSwaggerUI serves the Swagger UI and JSON spec. -func ServeSwaggerUI(mux *http.ServeMux, component, uiPath string) { +func ServeSwaggerUI(mux *http.ServeMux, box packr.Box, uiPath string) { prefix := path.Dir(uiPath) specURL := path.Join(prefix, "swagger.json") + swaggerJSON, err := box.MustString("swagger.json") + if err != nil { + log.Fatal(err) + } + mux.HandleFunc(specURL, func(w http.ResponseWriter, r *http.Request) { - http.ServeFile(w, r, filepath.Join(component, "swagger.json")) + fmt.Fprintf(w, swaggerJSON) }) mux.Handle(uiPath, middleware.Redoc(middleware.RedocOpts{ diff --git a/util/swagger/swagger_test.go b/util/swagger/swagger_test.go index 9e41a65edb92c..ecbb07a7f172c 100644 --- a/util/swagger/swagger_test.go +++ b/util/swagger/swagger_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/go-openapi/loads" + "github.com/gobuffalo/packr" ) func TestSwaggerUI(t *testing.T) { @@ -31,7 +32,7 @@ func TestSwaggerUI(t *testing.T) { c <- listener.Addr().String() mux := http.NewServeMux() - ServeSwaggerUI(mux, "../../server", "/swagger-ui") + ServeSwaggerUI(mux, packr.NewBox("../../server"), "/swagger-ui") panic(http.Serve(listener, mux)) }