mirror of https://github.com/docker/docs.git
Merge pull request #4128 from vieux/fix_header_content-type_api
Fix header content type api
This commit is contained in:
commit
968f4800b5
65
api/api.go
65
api/api.go
|
@ -107,6 +107,15 @@ func writeJSON(w http.ResponseWriter, code int, v engine.Env) error {
|
||||||
return v.Encode(w)
|
return v.Encode(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func streamJSON(job *engine.Job, w http.ResponseWriter, flush bool) {
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
if flush {
|
||||||
|
job.Stdout.Add(utils.NewWriteFlusher(w))
|
||||||
|
} else {
|
||||||
|
job.Stdout.Add(w)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getBoolParam(value string) (bool, error) {
|
func getBoolParam(value string) (bool, error) {
|
||||||
if value == "" {
|
if value == "" {
|
||||||
return false, nil
|
return false, nil
|
||||||
|
@ -213,7 +222,7 @@ func getImagesJSON(eng *engine.Engine, version float64, w http.ResponseWriter, r
|
||||||
job.Setenv("all", r.Form.Get("all"))
|
job.Setenv("all", r.Form.Get("all"))
|
||||||
|
|
||||||
if version >= 1.7 {
|
if version >= 1.7 {
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
} else if outs, err = job.Stdout.AddListTable(); err != nil {
|
} else if outs, err = job.Stdout.AddListTable(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -237,6 +246,7 @@ func getImagesJSON(eng *engine.Engine, version float64, w http.ResponseWriter, r
|
||||||
outsLegacy.Add(outLegacy)
|
outsLegacy.Add(outLegacy)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
if _, err := outsLegacy.WriteListTo(w); err != nil {
|
if _, err := outsLegacy.WriteListTo(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -264,9 +274,8 @@ func getEvents(eng *engine.Engine, version float64, w http.ResponseWriter, r *ht
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
var job = eng.Job("events", r.RemoteAddr)
|
var job = eng.Job("events", r.RemoteAddr)
|
||||||
job.Stdout.Add(utils.NewWriteFlusher(w))
|
streamJSON(job, w, true)
|
||||||
job.Setenv("since", r.Form.Get("since"))
|
job.Setenv("since", r.Form.Get("since"))
|
||||||
return job.Run()
|
return job.Run()
|
||||||
}
|
}
|
||||||
|
@ -277,7 +286,7 @@ func getImagesHistory(eng *engine.Engine, version float64, w http.ResponseWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
var job = eng.Job("history", vars["name"])
|
var job = eng.Job("history", vars["name"])
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
|
|
||||||
if err := job.Run(); err != nil {
|
if err := job.Run(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -290,7 +299,7 @@ func getContainersChanges(eng *engine.Engine, version float64, w http.ResponseWr
|
||||||
return fmt.Errorf("Missing parameter")
|
return fmt.Errorf("Missing parameter")
|
||||||
}
|
}
|
||||||
var job = eng.Job("changes", vars["name"])
|
var job = eng.Job("changes", vars["name"])
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
|
|
||||||
return job.Run()
|
return job.Run()
|
||||||
}
|
}
|
||||||
|
@ -307,7 +316,7 @@ func getContainersTop(eng *engine.Engine, version float64, w http.ResponseWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
job := eng.Job("top", vars["name"], r.Form.Get("ps_args"))
|
job := eng.Job("top", vars["name"], r.Form.Get("ps_args"))
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
return job.Run()
|
return job.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,8 +337,7 @@ func getContainersJSON(eng *engine.Engine, version float64, w http.ResponseWrite
|
||||||
job.Setenv("limit", r.Form.Get("limit"))
|
job.Setenv("limit", r.Form.Get("limit"))
|
||||||
|
|
||||||
if version >= 1.5 {
|
if version >= 1.5 {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
streamJSON(job, w, false)
|
||||||
job.Stdout.Add(w)
|
|
||||||
} else if outs, err = job.Stdout.AddTable(); err != nil {
|
} else if outs, err = job.Stdout.AddTable(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -342,6 +350,7 @@ func getContainersJSON(eng *engine.Engine, version float64, w http.ResponseWrite
|
||||||
ports.ReadListFrom([]byte(out.Get("Ports")))
|
ports.ReadListFrom([]byte(out.Get("Ports")))
|
||||||
out.Set("Ports", displayablePorts(ports))
|
out.Set("Ports", displayablePorts(ports))
|
||||||
}
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
if _, err = outs.WriteListTo(w); err != nil {
|
if _, err = outs.WriteListTo(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -434,8 +443,12 @@ func postImagesCreate(eng *engine.Engine, version float64, w http.ResponseWriter
|
||||||
job.Stdin.Add(r.Body)
|
job.Stdin.Add(r.Body)
|
||||||
}
|
}
|
||||||
|
|
||||||
job.SetenvBool("json", version > 1.0)
|
if version > 1.0 {
|
||||||
job.Stdout.Add(utils.NewWriteFlusher(w))
|
job.SetenvBool("json", true)
|
||||||
|
streamJSON(job, w, true)
|
||||||
|
} else {
|
||||||
|
job.Stdout.Add(utils.NewWriteFlusher(w))
|
||||||
|
}
|
||||||
if err := job.Run(); err != nil {
|
if err := job.Run(); err != nil {
|
||||||
if !job.Stdout.Used() {
|
if !job.Stdout.Used() {
|
||||||
return err
|
return err
|
||||||
|
@ -474,7 +487,7 @@ func getImagesSearch(eng *engine.Engine, version float64, w http.ResponseWriter,
|
||||||
var job = eng.Job("search", r.Form.Get("term"))
|
var job = eng.Job("search", r.Form.Get("term"))
|
||||||
job.SetenvJson("metaHeaders", metaHeaders)
|
job.SetenvJson("metaHeaders", metaHeaders)
|
||||||
job.SetenvJson("authConfig", authConfig)
|
job.SetenvJson("authConfig", authConfig)
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
|
|
||||||
return job.Run()
|
return job.Run()
|
||||||
}
|
}
|
||||||
|
@ -491,8 +504,12 @@ func postImagesInsert(eng *engine.Engine, version float64, w http.ResponseWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
job := eng.Job("insert", vars["name"], r.Form.Get("url"), r.Form.Get("path"))
|
job := eng.Job("insert", vars["name"], r.Form.Get("url"), r.Form.Get("path"))
|
||||||
job.SetenvBool("json", version > 1.0)
|
if version > 1.0 {
|
||||||
job.Stdout.Add(w)
|
job.SetenvBool("json", true)
|
||||||
|
streamJSON(job, w, false)
|
||||||
|
} else {
|
||||||
|
job.Stdout.Add(w)
|
||||||
|
}
|
||||||
if err := job.Run(); err != nil {
|
if err := job.Run(); err != nil {
|
||||||
if !job.Stdout.Used() {
|
if !job.Stdout.Used() {
|
||||||
return err
|
return err
|
||||||
|
@ -541,8 +558,12 @@ func postImagesPush(eng *engine.Engine, version float64, w http.ResponseWriter,
|
||||||
job := eng.Job("push", vars["name"])
|
job := eng.Job("push", vars["name"])
|
||||||
job.SetenvJson("metaHeaders", metaHeaders)
|
job.SetenvJson("metaHeaders", metaHeaders)
|
||||||
job.SetenvJson("authConfig", authConfig)
|
job.SetenvJson("authConfig", authConfig)
|
||||||
job.SetenvBool("json", version > 1.0)
|
if version > 1.0 {
|
||||||
job.Stdout.Add(utils.NewWriteFlusher(w))
|
job.SetenvBool("json", true)
|
||||||
|
streamJSON(job, w, true)
|
||||||
|
} else {
|
||||||
|
job.Stdout.Add(utils.NewWriteFlusher(w))
|
||||||
|
}
|
||||||
|
|
||||||
if err := job.Run(); err != nil {
|
if err := job.Run(); err != nil {
|
||||||
if !job.Stdout.Used() {
|
if !job.Stdout.Used() {
|
||||||
|
@ -644,7 +665,7 @@ func deleteImages(eng *engine.Engine, version float64, w http.ResponseWriter, r
|
||||||
return fmt.Errorf("Missing parameter")
|
return fmt.Errorf("Missing parameter")
|
||||||
}
|
}
|
||||||
var job = eng.Job("image_delete", vars["name"])
|
var job = eng.Job("image_delete", vars["name"])
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
job.SetenvBool("autoPrune", version > 1.1)
|
job.SetenvBool("autoPrune", version > 1.1)
|
||||||
|
|
||||||
return job.Run()
|
return job.Run()
|
||||||
|
@ -824,7 +845,7 @@ func getContainersByName(eng *engine.Engine, version float64, w http.ResponseWri
|
||||||
return fmt.Errorf("Missing parameter")
|
return fmt.Errorf("Missing parameter")
|
||||||
}
|
}
|
||||||
var job = eng.Job("inspect", vars["name"], "container")
|
var job = eng.Job("inspect", vars["name"], "container")
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
job.SetenvBool("conflict", true) //conflict=true to detect conflict between containers and images in the job
|
job.SetenvBool("conflict", true) //conflict=true to detect conflict between containers and images in the job
|
||||||
return job.Run()
|
return job.Run()
|
||||||
}
|
}
|
||||||
|
@ -834,7 +855,7 @@ func getImagesByName(eng *engine.Engine, version float64, w http.ResponseWriter,
|
||||||
return fmt.Errorf("Missing parameter")
|
return fmt.Errorf("Missing parameter")
|
||||||
}
|
}
|
||||||
var job = eng.Job("inspect", vars["name"], "image")
|
var job = eng.Job("inspect", vars["name"], "image")
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
job.SetenvBool("conflict", true) //conflict=true to detect conflict between containers and images in the job
|
job.SetenvBool("conflict", true) //conflict=true to detect conflict between containers and images in the job
|
||||||
return job.Run()
|
return job.Run()
|
||||||
}
|
}
|
||||||
|
@ -874,11 +895,11 @@ func postBuild(eng *engine.Engine, version float64, w http.ResponseWriter, r *ht
|
||||||
}
|
}
|
||||||
|
|
||||||
if version >= 1.8 {
|
if version >= 1.8 {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
job.SetenvBool("json", true)
|
job.SetenvBool("json", true)
|
||||||
|
streamJSON(job, w, true)
|
||||||
|
} else {
|
||||||
|
job.Stdout.Add(utils.NewWriteFlusher(w))
|
||||||
}
|
}
|
||||||
|
|
||||||
job.Stdout.Add(utils.NewWriteFlusher(w))
|
|
||||||
job.Stdin.Add(r.Body)
|
job.Stdin.Add(r.Body)
|
||||||
job.Setenv("remote", r.FormValue("remote"))
|
job.Setenv("remote", r.FormValue("remote"))
|
||||||
job.Setenv("t", r.FormValue("t"))
|
job.Setenv("t", r.FormValue("t"))
|
||||||
|
@ -919,7 +940,7 @@ func postContainersCopy(eng *engine.Engine, version float64, w http.ResponseWrit
|
||||||
}
|
}
|
||||||
|
|
||||||
job := eng.Job("container_copy", vars["name"], copyData.Get("Resource"))
|
job := eng.Job("container_copy", vars["name"], copyData.Get("Resource"))
|
||||||
job.Stdout.Add(w)
|
streamJSON(job, w, false)
|
||||||
if err := job.Run(); err != nil {
|
if err := job.Run(); err != nil {
|
||||||
utils.Errorf("%s", err.Error())
|
utils.Errorf("%s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue