diff options
author | Jhon Honce <jhonce@redhat.com> | 2020-01-23 16:13:47 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2020-01-23 16:32:00 -0700 |
commit | 9634e7eef77abbba2584b8e78daf9c76cfdcedd9 (patch) | |
tree | 61731b20c17e12b2c342ec910e28072029d2ecae /pkg/api/handlers/generic/images.go | |
parent | 8beeb067aac857deb29e91562cf4b6f068fe0328 (diff) | |
download | podman-9634e7eef77abbba2584b8e78daf9c76cfdcedd9.tar.gz podman-9634e7eef77abbba2584b8e78daf9c76cfdcedd9.tar.bz2 podman-9634e7eef77abbba2584b8e78daf9c76cfdcedd9.zip |
Add query parameter converters for complex types
* Add converter for URL query parameters of type map[string][]string
* Add converter for URL query parameters of type time.Time
* Added function to allocate and configure schema.Decoder for API use
* Updated API handlers to leverage new converters, and correct handler
code for filter type
An encoding example for a client using filters:
v := map[string][]string{
"dangling": {"true"},
}
payload, err := jsoniter.MarshalToString(v)
if err != nil {
panic(err)
}
payload = "?filters=" + url.QueryEscape(payload)
Signed-off-by: Jhon Honce <jhonce@redhat.com>
Diffstat (limited to 'pkg/api/handlers/generic/images.go')
-rw-r--r-- | pkg/api/handlers/generic/images.go | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/pkg/api/handlers/generic/images.go b/pkg/api/handlers/generic/images.go index 395f64064..93adb7f69 100644 --- a/pkg/api/handlers/generic/images.go +++ b/pkg/api/handlers/generic/images.go @@ -62,14 +62,14 @@ func PruneImages(w http.ResponseWriter, r *http.Request) { // 200 no error // 500 internal var ( - dangling bool = true + dangling = true err error ) decoder := r.Context().Value("decoder").(*schema.Decoder) runtime := r.Context().Value("runtime").(*libpod.Runtime) query := struct { - filters map[string]string + Filters map[string][]string `schema:"filters"` }{ // This is where you can override the golang default value for one of fields } @@ -79,26 +79,25 @@ func PruneImages(w http.ResponseWriter, r *http.Request) { return } - // FIXME This is likely wrong due to it not being a map[string][]string - // until ts is not supported on podman prune - if len(query.filters["until"]) > 0 { - utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "until is not supported yet")) + if v, found := query.Filters["until"]; found { + utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrapf(err, "until=%s is not supported yet", v)) return } // labels are not supported on podman prune - if len(query.filters["label"]) > 0 { + if _, found := query.Filters["since"]; found { utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "labelis not supported yet")) return } - if len(query.filters["dangling"]) > 0 { - dangling, err = strconv.ParseBool(query.filters["dangling"]) + if v, found := query.Filters["dangling"]; found { + dangling, err = strconv.ParseBool(v[0]) if err != nil { utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "processing dangling filter")) return } } + idr := []types.ImageDeleteResponseItem{} // // This code needs to be migrated to libpod to work correctly. I could not |