From 10ab2089ce189d5bea3f7aaac3b5081471309478 Mon Sep 17 00:00:00 2001 From: Jessica Frazelle Date: Wed, 17 Sep 2014 17:53:04 -0700 Subject: [PATCH] Change content-type for json stream to application/x-json-stream. Docker-DCO-1.1-Signed-off-by: Jessica Frazelle (github: jfrazelle) --- api/client/utils.go | 2 +- api/server/server.go | 5 +++++ api/server/server_unit_test.go | 2 +- docs/sources/reference/api/docker_remote_api.md | 10 ++++++++-- docs/sources/reference/api/docker_remote_api_v1.15.md | 4 ++-- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/api/client/utils.go b/api/client/utils.go index b1fec647c4..19e280614e 100644 --- a/api/client/utils.go +++ b/api/client/utils.go @@ -167,7 +167,7 @@ func (cli *DockerCli) streamHelper(method, path string, setRawTerminal bool, in return fmt.Errorf("Error: %s", bytes.TrimSpace(body)) } - if api.MatchesContentType(resp.Header.Get("Content-Type"), "application/json") { + if api.MatchesContentType(resp.Header.Get("Content-Type"), "application/json") || api.MatchesContentType(resp.Header.Get("Content-Type"), "application/x-json-stream") { return utils.DisplayJSONMessagesStream(resp.Body, stdout, cli.terminalFd, cli.isTerminal) } if stdout != nil || stderr != nil { diff --git a/api/server/server.go b/api/server/server.go index 74bebfde1d..61774fc680 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -102,6 +102,10 @@ func writeJSON(w http.ResponseWriter, code int, v engine.Env) error { func streamJSON(job *engine.Job, w http.ResponseWriter, flush bool) { w.Header().Set("Content-Type", "application/json") + if job.GetenvBool("lineDelim") { + w.Header().Set("Content-Type", "application/x-json-stream") + } + if flush { job.Stdout.Add(utils.NewWriteFlusher(w)) } else { @@ -976,6 +980,7 @@ func postBuild(eng *engine.Engine, version version.Version, w http.ResponseWrite job.Setenv("q", r.FormValue("q")) job.Setenv("nocache", r.FormValue("nocache")) job.Setenv("forcerm", r.FormValue("forcerm")) + job.SetenvBool("lineDelim", version.GreaterThanOrEqualTo("1.15")) job.SetenvJson("authConfig", authConfig) job.SetenvJson("configFile", configFile) diff --git a/api/server/server_unit_test.go b/api/server/server_unit_test.go index 519652f377..b433cc7683 100644 --- a/api/server/server_unit_test.go +++ b/api/server/server_unit_test.go @@ -275,7 +275,7 @@ func TestGetEvents(t *testing.T) { if !called { t.Fatal("handler was not called") } - assertContentType(r, "application/json", t) + assertContentType(r, "application/x-json-stream", t) var stdout_json struct { Since int Until int diff --git a/docs/sources/reference/api/docker_remote_api.md b/docs/sources/reference/api/docker_remote_api.md index 6a7e9731be..a9b00aa412 100644 --- a/docs/sources/reference/api/docker_remote_api.md +++ b/docs/sources/reference/api/docker_remote_api.md @@ -37,6 +37,12 @@ You can still call an old version of the API using ### What's new +`POST /build` +`GET /events` + +**New!** +Now has header: `Content-Type: application/x-json-stream`. + ## v1.14 ### Full Documentation @@ -77,7 +83,7 @@ the `tag` parameter at the same time will return an error. The `HostConfig.Links` field is now filled correctly **New!** -`Sockets` parameter added to the `/info` endpoint listing all the sockets the +`Sockets` parameter added to the `/info` endpoint listing all the sockets the daemon is configured to listen on. `POST /containers/(name)/start` @@ -405,7 +411,7 @@ Builder (/build): intermediary buffers - Simpler, less memory usage, less disk usage and faster -> **Warning**: +> **Warning**: > The /build improvements are not reverse-compatible. Pre 1.3 clients will > break on /build. diff --git a/docs/sources/reference/api/docker_remote_api_v1.15.md b/docs/sources/reference/api/docker_remote_api_v1.15.md index 2f2e77b1e6..77e9090ad4 100644 --- a/docs/sources/reference/api/docker_remote_api_v1.15.md +++ b/docs/sources/reference/api/docker_remote_api_v1.15.md @@ -1093,7 +1093,7 @@ Build an image from Dockerfile via stdin **Example response**: HTTP/1.1 200 OK - Content-Type: application/json + Content-Type: application/x-json-stream {"stream":"Step 1..."} {"stream":"..."} @@ -1328,7 +1328,7 @@ via polling (using since) **Example response**: HTTP/1.1 200 OK - Content-Type: application/json + Content-Type: application/x-json-stream {"status":"create","id":"dfdf82bd3881","from":"base:latest","time":1374067924} {"status":"start","id":"dfdf82bd3881","from":"base:latest","time":1374067924}