mirror of
https://github.com/ipfs/kubo.git
synced 2025-07-15 07:58:15 +08:00
some commenting
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
This commit is contained in:
commands/http
@ -242,6 +242,8 @@ func getResponse(httpRes *http.Response, req cmds.Request) (cmds.Response, error
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// read json objects off of the given stream, and write the objects out to
|
||||
// the 'out' channel
|
||||
func readStreamedJson(req cmds.Request, httpRes *http.Response, out chan<- interface{}) {
|
||||
defer close(out)
|
||||
dec := json.NewDecoder(&httpResponseReader{httpRes})
|
||||
@ -270,6 +272,8 @@ func readStreamedJson(req cmds.Request, httpRes *http.Response, out chan<- inter
|
||||
}
|
||||
}
|
||||
|
||||
// decode a value of the given type, if the type is nil, attempt to decode into
|
||||
// an interface{} anyways
|
||||
func decodeTypedVal(t reflect.Type, dec *json.Decoder) (interface{}, error) {
|
||||
var v interface{}
|
||||
var err error
|
||||
@ -283,6 +287,9 @@ func decodeTypedVal(t reflect.Type, dec *json.Decoder) (interface{}, error) {
|
||||
return v, err
|
||||
}
|
||||
|
||||
// httpResponseReader reads from the response body, and checks for an error
|
||||
// in the http trailer upon EOF, this error if present is returned instead
|
||||
// of the EOF.
|
||||
type httpResponseReader struct {
|
||||
resp *http.Response
|
||||
}
|
||||
|
@ -193,6 +193,7 @@ func sendResponse(w http.ResponseWriter, req cmds.Request, res cmds.Response) {
|
||||
mime = applicationJson
|
||||
}
|
||||
}
|
||||
|
||||
if mime != "" {
|
||||
h.Set(contentTypeHeader, mime)
|
||||
}
|
||||
@ -207,6 +208,7 @@ func sendResponse(w http.ResponseWriter, req cmds.Request, res cmds.Response) {
|
||||
// Copies from an io.Reader to a http.ResponseWriter.
|
||||
// Flushes chunks over HTTP stream as they are read (if supported by transport).
|
||||
func copyChunks(status int, w http.ResponseWriter, out io.Reader) error {
|
||||
// hijack the connection so we can write our own chunked output and trailers
|
||||
hijacker, ok := w.(http.Hijacker)
|
||||
if !ok {
|
||||
log.Error("Failed to create hijacker! cannot continue!")
|
||||
|
Reference in New Issue
Block a user