diff options
author | Brent Baude <bbaude@redhat.com> | 2020-03-18 14:33:39 -0500 |
---|---|---|
committer | Brent Baude <bbaude@redhat.com> | 2020-03-18 14:34:14 -0500 |
commit | 52c835053007c5991903e778b5dbf64a25aea0a4 (patch) | |
tree | 63037289a6d3d4f9fd79e9d8323bc1989fea043c /pkg/api/handlers/libpod/swagger.go | |
parent | 45e7cbfef65d0379af19264c5fa90e1ae9ccb74a (diff) | |
download | podman-52c835053007c5991903e778b5dbf64a25aea0a4.tar.gz podman-52c835053007c5991903e778b5dbf64a25aea0a4.tar.bz2 podman-52c835053007c5991903e778b5dbf64a25aea0a4.zip |
serve swagger when present
register the swagger endpoint and add some error handling for when the swagger file does not exist
Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/api/handlers/libpod/swagger.go')
-rw-r--r-- | pkg/api/handlers/libpod/swagger.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/pkg/api/handlers/libpod/swagger.go b/pkg/api/handlers/libpod/swagger.go index f6a26134b..149fa10dc 100644 --- a/pkg/api/handlers/libpod/swagger.go +++ b/pkg/api/handlers/libpod/swagger.go @@ -1,6 +1,16 @@ package libpod -import "github.com/containers/image/v5/manifest" +import ( + "net/http" + "os" + + "github.com/containers/image/v5/manifest" + "github.com/containers/libpod/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" // List Containers // swagger:response ListContainers @@ -15,3 +25,20 @@ type swagInspectManifestResponse struct { // in:body Body manifest.List } + +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 os.IsNotExist(err) { + utils.InternalServerError(w, errors.Errorf("file %q does not exist", path)) + return + } + utils.InternalServerError(w, err) + return + } + w.Header().Set("Content-Type", "text/yaml") + http.ServeFile(w, r, path) +} |