From a65068aff8d0cd9fdb8993c20e609364eb1213af Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Wed, 15 Jan 2020 16:51:46 +0100 Subject: api: utils: add an `IsLibpodRequest` handler Add a hanlder to figure out if the specified http request came through a libpod endpoint. A first user is the top endpoint which has a different default value for `ps_args` depending if the request came through the docker or libpod endpoint. Signed-off-by: Valentin Rothberg --- pkg/api/handlers/utils/handler.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'pkg/api/handlers/utils/handler.go') diff --git a/pkg/api/handlers/utils/handler.go b/pkg/api/handlers/utils/handler.go index 65698bfd3..2fd9bffba 100644 --- a/pkg/api/handlers/utils/handler.go +++ b/pkg/api/handlers/utils/handler.go @@ -6,10 +6,18 @@ import ( "io" "net/http" "os" + "strings" - log "github.com/sirupsen/logrus" + "github.com/sirupsen/logrus" ) +// IsLibpodRequest returns true if the request related to a libpod endpoint +// (e.g., /v2/libpod/...). +func IsLibpodRequest(r *http.Request) bool { + split := strings.Split(r.URL.String(), "/") + return len(split) >= 3 && split[2] == "libpod" +} + // WriteResponse encodes the given value as JSON or string and renders it for http client func WriteResponse(w http.ResponseWriter, code int, value interface{}) { switch v := value.(type) { @@ -18,14 +26,14 @@ func WriteResponse(w http.ResponseWriter, code int, value interface{}) { w.WriteHeader(code) if _, err := fmt.Fprintln(w, v); err != nil { - log.Errorf("unable to send string response: %q", err) + logrus.Errorf("unable to send string response: %q", err) } case *os.File: w.Header().Set("Content-Type", "application/octet; charset=us-ascii") w.WriteHeader(code) if _, err := io.Copy(w, v); err != nil { - log.Errorf("unable to copy to response: %q", err) + logrus.Errorf("unable to copy to response: %q", err) } default: WriteJSON(w, code, value) @@ -40,6 +48,6 @@ func WriteJSON(w http.ResponseWriter, code int, value interface{}) { coder := json.NewEncoder(w) coder.SetEscapeHTML(true) if err := coder.Encode(value); err != nil { - log.Errorf("unable to write json: %q", err) + logrus.Errorf("unable to write json: %q", err) } } -- cgit v1.2.3-54-g00ecf