diff options
author | Brent Baude <bbaude@redhat.com> | 2020-02-22 12:44:35 -0600 |
---|---|---|
committer | Brent Baude <bbaude@redhat.com> | 2020-02-23 11:01:21 -0600 |
commit | d92b9b88595b030245d5d74b096ce605b5ae2db7 (patch) | |
tree | e27164ccfa2248682e5338e5535a9dee0ee2d7b6 /pkg/api/handlers | |
parent | 9fd01e19458bd8c8281663bdb504f02aa3a92e3b (diff) | |
download | podman-d92b9b88595b030245d5d74b096ce605b5ae2db7.tar.gz podman-d92b9b88595b030245d5d74b096ce605b5ae2db7.tar.bz2 podman-d92b9b88595b030245d5d74b096ce605b5ae2db7.zip |
more image binding tests
add two additional bindings tests for image usage.
add ability to use search filter on the endpoint.
Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/api/handlers')
-rw-r--r-- | pkg/api/handlers/images.go | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/pkg/api/handlers/images.go b/pkg/api/handlers/images.go index 96bcbdc96..2086ce748 100644 --- a/pkg/api/handlers/images.go +++ b/pkg/api/handlers/images.go @@ -7,6 +7,7 @@ import ( "os" "strconv" + "github.com/containers/image/v5/types" "github.com/containers/libpod/libpod" "github.com/containers/libpod/libpod/image" "github.com/containers/libpod/pkg/api/handlers/utils" @@ -147,10 +148,36 @@ func SearchImages(w http.ResponseWriter, r *http.Request) { utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String())) return } - // TODO filters are a bit undefined here in terms of what exactly the input looks - // like. We need to understand that a bit more. + + filter := image.SearchFilter{} + if len(query.Filters) > 0 { + if len(query.Filters["stars"]) > 0 { + stars, err := strconv.Atoi(query.Filters["stars"][0]) + if err != nil { + utils.InternalServerError(w, err) + return + } + filter.Stars = stars + } + if len(query.Filters["is-official"]) > 0 { + isOfficial, err := strconv.ParseBool(query.Filters["is-official"][0]) + if err != nil { + utils.InternalServerError(w, err) + return + } + filter.IsOfficial = types.NewOptionalBool(isOfficial) + } + if len(query.Filters["is-automated"]) > 0 { + isAutomated, err := strconv.ParseBool(query.Filters["is-automated"][0]) + if err != nil { + utils.InternalServerError(w, err) + return + } + filter.IsAutomated = types.NewOptionalBool(isAutomated) + } + } options := image.SearchOptions{ - Filter: image.SearchFilter{}, + Filter: filter, Limit: query.Limit, } results, err := image.SearchImages(query.Term, options) |