提交 cf1e770e 作者: Matt Bell

commands/http: Client: decode chunked streaming output

上级 c3c0b248
......@@ -137,8 +137,31 @@ func getResponse(httpRes *http.Response, req cmds.Request) (cmds.Response, error
contentType = strings.Split(contentType, ";")[0]
if len(httpRes.Header.Get(streamHeader)) > 0 {
// if output is a stream, we can just use the body reader
res.SetOutput(httpRes.Body)
return res, nil
} else if len(httpRes.Header.Get(channelHeader)) > 0 {
// if output is coming from a channel, decode each chunk
outChan := make(chan interface{})
go func() {
dec := json.NewDecoder(httpRes.Body)
v := req.Command().Type
for {
err := dec.Decode(&v)
if err != nil {
if err != io.EOF {
fmt.Println(err.Error())
}
return
}
outChan <- v
}
}()
res.SetOutput(outChan)
return res, nil
}
dec := json.NewDecoder(httpRes.Body)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论