1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-29 09:34:03 +08:00

commands/http: Client: decode chunked streaming output

This commit is contained in:
Matt Bell
2014-12-17 16:20:24 -08:00
parent c3c0b248e8
commit cf1e770e1e

View File

@ -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)