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/utils | |
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/utils')
-rw-r--r-- | pkg/api/handlers/utils/images.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/pkg/api/handlers/utils/images.go b/pkg/api/handlers/utils/images.go index 9445298ca..a0d340471 100644 --- a/pkg/api/handlers/utils/images.go +++ b/pkg/api/handlers/utils/images.go @@ -15,17 +15,18 @@ func GetImages(w http.ResponseWriter, r *http.Request) ([]*image.Image, error) { decoder := r.Context().Value("decoder").(*schema.Decoder) runtime := r.Context().Value("runtime").(*libpod.Runtime) query := struct { - //all bool # all is currently unused - filters []string - //digests bool # digests is currently unused + // all bool # all is currently unused + Filters map[string][]string `schema:"filters"` + // digests bool # digests is currently unused }{ // This is where you can override the golang default value for one of fields } if err := decoder.Decode(&query, r.URL.Query()); err != nil { return nil, err } - filters := query.filters - if len(filters) < 1 { + + var filters = []string{} + if _, found := r.URL.Query()["filters"]; found { filters = append(filters, fmt.Sprintf("reference=%s", "")) } return runtime.ImageRuntime().GetImagesWithFilters(filters) |