From 5b79cf15a0226dc3dad5053615ee652823376cd3 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Thu, 19 May 2022 10:27:31 -0700 Subject: Swagger refactor/cleanup * Remove duplicate or unused types and constants * Move all documetation-only models and responses into swagger package * Remove all unecessary names, go-swagger will determine names from struct declarations * Use Libpod suffix to differentiate between compat and libpod models and responses. Taken from swagger:operation declarations. * Models and responses that start with lowercase are for swagger use only while uppercase are used "as is" in the code and swagger comments * Used gofumpt on new code ```release-note ``` Signed-off-by: Jhon Honce --- pkg/api/handlers/libpod/swagger_spec.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 pkg/api/handlers/libpod/swagger_spec.go (limited to 'pkg/api/handlers/libpod/swagger_spec.go') diff --git a/pkg/api/handlers/libpod/swagger_spec.go b/pkg/api/handlers/libpod/swagger_spec.go new file mode 100644 index 000000000..8eeb041d2 --- /dev/null +++ b/pkg/api/handlers/libpod/swagger_spec.go @@ -0,0 +1,29 @@ +package libpod + +import ( + "net/http" + "os" + + "github.com/containers/podman/v4/pkg/api/handlers/utils" + "github.com/pkg/errors" +) + +// DefaultPodmanSwaggerSpec provides the default path to the podman swagger spec file +const DefaultPodmanSwaggerSpec = "/usr/share/containers/podman/swagger.yaml" + +func ServeSwagger(w http.ResponseWriter, r *http.Request) { + path := DefaultPodmanSwaggerSpec + if p, found := os.LookupEnv("PODMAN_SWAGGER_SPEC"); found { + path = p + } + if _, err := os.Stat(path); err != nil { + if errors.Is(err, os.ErrNotExist) { + utils.InternalServerError(w, errors.Errorf("swagger spec %q does not exist", path)) + return + } + utils.InternalServerError(w, err) + return + } + w.Header().Set("Content-Type", "text/yaml") + http.ServeFile(w, r, path) +} -- cgit v1.2.3-54-g00ecf