From f6b56e996d6b721cb95c1a19b1df061900fb8fd1 Mon Sep 17 00:00:00 2001 From: David Sissitka Date: Thu, 29 Aug 2013 09:14:14 -0700 Subject: [PATCH 1/6] Updated "POST /containers/create" to return the right Content-Type. --- api.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api.go b/api.go index 9e094231b5..af3f2e1482 100644 --- a/api.go +++ b/api.go @@ -547,8 +547,9 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r if err != nil { return err } + w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) - writeJSON(w, b) + w.Write(b) return nil } From dd49cc45c885de15133a6e547671846e63a0334a Mon Sep 17 00:00:00 2001 From: David Sissitka Date: Wed, 11 Sep 2013 00:23:53 -0700 Subject: [PATCH 2/6] Added a status code argument to writeJSON. --- api.go | 138 ++++++++++++++++----------------------------------------- 1 file changed, 38 insertions(+), 100 deletions(-) diff --git a/api.go b/api.go index af3f2e1482..6a2358c650 100644 --- a/api.go +++ b/api.go @@ -71,9 +71,18 @@ func httpError(w http.ResponseWriter, err error) { http.Error(w, err.Error(), statusCode) } -func writeJSON(w http.ResponseWriter, b []byte) { +func writeJSON(w http.ResponseWriter, code int, v interface{}) error { + b, err := json.Marshal(v) + + if err != nil { + return err + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(code) w.Write(b) + + return nil } func getBoolParam(value string) (bool, error) { @@ -106,25 +115,14 @@ func postAuth(srv *Server, version float64, w http.ResponseWriter, r *http.Reque return err } if status != "" { - b, err := json.Marshal(&APIAuth{Status: status}) - if err != nil { - return err - } - writeJSON(w, b) - return nil + return writeJSON(w, http.StatusOK, &APIAuth{Status: status}) } w.WriteHeader(http.StatusNoContent) return nil } func getVersion(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { - m := srv.DockerVersion() - b, err := json.Marshal(m) - if err != nil { - return err - } - writeJSON(w, b) - return nil + return writeJSON(w, http.StatusOK, srv.DockerVersion()) } func postContainersKill(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -167,12 +165,8 @@ func getImagesJSON(srv *Server, version float64, w http.ResponseWriter, r *http. if err != nil { return err } - b, err := json.Marshal(outs) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, outs) } func getImagesViz(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -183,13 +177,7 @@ func getImagesViz(srv *Server, version float64, w http.ResponseWriter, r *http.R } func getInfo(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { - out := srv.DockerInfo() - b, err := json.Marshal(out) - if err != nil { - return err - } - writeJSON(w, b) - return nil + return writeJSON(w, http.StatusOK, srv.DockerInfo()) } func getEvents(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -258,12 +246,8 @@ func getImagesHistory(srv *Server, version float64, w http.ResponseWriter, r *ht if err != nil { return err } - b, err := json.Marshal(outs) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, outs) } func getContainersChanges(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -275,12 +259,8 @@ func getContainersChanges(srv *Server, version float64, w http.ResponseWriter, r if err != nil { return err } - b, err := json.Marshal(changesStr) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, changesStr) } func getContainersTop(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -299,12 +279,8 @@ func getContainersTop(srv *Server, version float64, w http.ResponseWriter, r *ht if err != nil { return err } - b, err := json.Marshal(procsStr) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, procsStr) } func getContainersJSON(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -327,12 +303,8 @@ func getContainersJSON(srv *Server, version float64, w http.ResponseWriter, r *h } outs := srv.Containers(all, size, n, since, before) - b, err := json.Marshal(outs) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, outs) } func postImagesTag(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -374,13 +346,8 @@ func postCommit(srv *Server, version float64, w http.ResponseWriter, r *http.Req if err != nil { return err } - b, err := json.Marshal(&APIID{id}) - if err != nil { - return err - } - w.WriteHeader(http.StatusCreated) - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusCreated, &APIID{id}) } // Creates an image from Pull or from Import @@ -434,12 +401,8 @@ func getImagesSearch(srv *Server, version float64, w http.ResponseWriter, r *htt if err != nil { return err } - b, err := json.Marshal(outs) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, outs) } func postImagesInsert(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -464,12 +427,8 @@ func postImagesInsert(srv *Server, version float64, w http.ResponseWriter, r *ht return nil } } - b, err := json.Marshal(&APIID{ID: imgID}) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, &APIID{ID: imgID}) } func postImagesPush(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -606,11 +565,7 @@ func deleteImages(srv *Server, version float64, w http.ResponseWriter, r *http.R } if imgs != nil { if len(imgs) != 0 { - b, err := json.Marshal(imgs) - if err != nil { - return err - } - writeJSON(w, b) + return writeJSON(w, http.StatusOK, imgs) } else { return fmt.Errorf("Conflict, %s wasn't deleted", name) } @@ -673,12 +628,8 @@ func postContainersWait(srv *Server, version float64, w http.ResponseWriter, r * if err != nil { return err } - b, err := json.Marshal(&APIWait{StatusCode: status}) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, &APIWait{StatusCode: status}) } func postContainersResize(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -820,12 +771,8 @@ func getContainersByName(srv *Server, version float64, w http.ResponseWriter, r if err != nil { return err } - b, err := json.Marshal(container) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, container) } func getImagesByName(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -838,12 +785,8 @@ func getImagesByName(srv *Server, version float64, w http.ResponseWriter, r *htt if err != nil { return err } - b, err := json.Marshal(image) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, image) } func postImagesGetCache(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { @@ -860,13 +803,8 @@ func postImagesGetCache(srv *Server, version float64, w http.ResponseWriter, r * w.WriteHeader(http.StatusNotFound) return nil } - apiID := &APIID{ID: image.ID} - b, err := json.Marshal(apiID) - if err != nil { - return err - } - writeJSON(w, b) - return nil + + return writeJSON(w, http.StatusOK, &APIID{ID: image.ID}) } func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { From 33e4d73629dd2a913e5b8e4c96faba09bcb1bcac Mon Sep 17 00:00:00 2001 From: David Sissitka Date: Wed, 11 Sep 2013 01:07:05 -0700 Subject: [PATCH 3/6] Replaced leading spaces with tabs. --- api.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api.go b/api.go index e794f9ea47..97db0e23c3 100644 --- a/api.go +++ b/api.go @@ -311,9 +311,9 @@ func getContainersJSON(srv *Server, version float64, w http.ResponseWriter, r *h outs2 = append(outs2, ctnr.ToLegacy()) } - return writeJSON(w, http.StatusOK, outs2) + return writeJSON(w, http.StatusOK, outs2) } else { - return writeJSON(w, http.StatusOK, outs) + return writeJSON(w, http.StatusOK, outs) } } From d48ea32186cfa069db80d6dd3b79a9d2e0c14c7f Mon Sep 17 00:00:00 2001 From: David Sissitka Date: Wed, 11 Sep 2013 01:26:26 -0700 Subject: [PATCH 4/6] Updated postContainersCreate to use writeJSON. --- api.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/api.go b/api.go index 97db0e23c3..c5d7248953 100644 --- a/api.go +++ b/api.go @@ -535,14 +535,7 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r out.Warnings = append(out.Warnings, "IPv4 forwarding is disabled.") } - b, err := json.Marshal(out) - if err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusCreated) - w.Write(b) - return nil + return writeJSON(w, http.StatusCreated, out) } func postContainersRestart(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { From f4ba0d42675a4085dfe96543a9265d9caf6b5e85 Mon Sep 17 00:00:00 2001 From: David Sissitka Date: Wed, 11 Sep 2013 01:28:20 -0700 Subject: [PATCH 5/6] Replaced leading spaces with tabs. Again. --- api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.go b/api.go index c5d7248953..cefc7a7f83 100644 --- a/api.go +++ b/api.go @@ -535,7 +535,7 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r out.Warnings = append(out.Warnings, "IPv4 forwarding is disabled.") } - return writeJSON(w, http.StatusCreated, out) + return writeJSON(w, http.StatusCreated, out) } func postContainersRestart(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error { From 71d46eaf029fcc49edade5e7a967909d57e5c723 Mon Sep 17 00:00:00 2001 From: David Sissitka Date: Wed, 11 Sep 2013 01:39:55 -0700 Subject: [PATCH 6/6] Fixed a bug I created when rebasing. --- api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.go b/api.go index cefc7a7f83..5d565ef4dc 100644 --- a/api.go +++ b/api.go @@ -822,7 +822,7 @@ func getImagesByName(srv *Server, version float64, w http.ResponseWriter, r *htt return fmt.Errorf("Conflict between containers and images") } - return writeJSON(w, http.StatusOK, &APIID{ID: image.ID}) + return writeJSON(w, http.StatusOK, image) } func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Request, vars map[string]string) error {