Pārlūkot izejas kodu

Change content-type for json stream to application/x-json-stream.

Docker-DCO-1.1-Signed-off-by: Jessica Frazelle <jess@docker.com> (github: jfrazelle)
Jessica Frazelle 11 gadi atpakaļ
vecāks
revīzija
10ab2089ce

+ 1 - 1
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 {

+ 5 - 0
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)
 

+ 1 - 1
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

+ 8 - 2
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.
 

+ 2 - 2
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}