mirror of
https://github.com/containers/podman.git
synced 2025-06-05 14:06:01 +08:00
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>
This commit is contained in:
@ -11,6 +11,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/containers/libpod/libpod"
|
||||
"github.com/containers/libpod/pkg/api/handlers"
|
||||
"github.com/coreos/go-systemd/activation"
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/gorilla/schema"
|
||||
@ -71,7 +72,7 @@ func newServer(runtime *libpod.Runtime, duration time.Duration, listener *net.Li
|
||||
ReadTimeout: 20 * time.Second,
|
||||
WriteTimeout: 2 * time.Minute,
|
||||
},
|
||||
Decoder: schema.NewDecoder(),
|
||||
Decoder: handlers.NewAPIDecoder(),
|
||||
Context: nil,
|
||||
Runtime: runtime,
|
||||
Listener: *listener,
|
||||
@ -85,6 +86,7 @@ func newServer(runtime *libpod.Runtime, duration time.Duration, listener *net.Li
|
||||
})
|
||||
|
||||
ctx, cancelFn := context.WithCancel(context.Background())
|
||||
server.CancelFunc = cancelFn
|
||||
|
||||
// TODO: Use ConnContext when ported to go 1.13
|
||||
ctx = context.WithValue(ctx, "decoder", server.Decoder)
|
||||
@ -92,9 +94,6 @@ func newServer(runtime *libpod.Runtime, duration time.Duration, listener *net.Li
|
||||
ctx = context.WithValue(ctx, "shutdownFunc", server.Shutdown)
|
||||
server.Context = ctx
|
||||
|
||||
server.CancelFunc = cancelFn
|
||||
server.Decoder.IgnoreUnknownKeys(true)
|
||||
|
||||
router.NotFoundHandler = http.HandlerFunc(
|
||||
func(w http.ResponseWriter, r *http.Request) {
|
||||
// We can track user errors...
|
||||
|
Reference in New Issue
Block a user