summaryrefslogtreecommitdiff
path: root/pkg/api/handlers/libpod/swagger_spec.go
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2022-05-19 10:27:31 -0700
committerJhon Honce <jhonce@redhat.com>2022-05-19 15:24:18 -0700
commit5b79cf15a0226dc3dad5053615ee652823376cd3 (patch)
tree066e0b6e5fde4af49e7113ab48c277a55a60c22a /pkg/api/handlers/libpod/swagger_spec.go
parent913caaa9b1de2b63692c9bae15120208194c9eb3 (diff)
downloadpodman-5b79cf15a0226dc3dad5053615ee652823376cd3.tar.gz
podman-5b79cf15a0226dc3dad5053615ee652823376cd3.tar.bz2
podman-5b79cf15a0226dc3dad5053615ee652823376cd3.zip
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 <jhonce@redhat.com>
Diffstat (limited to 'pkg/api/handlers/libpod/swagger_spec.go')
-rw-r--r--pkg/api/handlers/libpod/swagger_spec.go29
1 files changed, 29 insertions, 0 deletions
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)
+}