in whisk/client.go [501:539]
func PrintResponseInfo(resp *http.Response, secretToObfuscate ...ObfuscateSet) (*http.Response, []byte, error) {
var truncatedBody string
// Don't "defer resp.Body.Close()" here because the body is reloaded to allow caller to
// do custom body parsing, such as handling per-route error responses.
Verbose("RESPONSE:")
Verbose("Got response with code %d\n", resp.StatusCode)
if IsVerbose() && len(resp.Header) > 0 {
fmt.Println("Resp Headers")
PrintJSON(resp.Header)
}
// Read the response body
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
Debug(DbgError, "ioutil.ReadAll(resp.Body) error: %s\n", err)
werr := MakeWskError(err, EXIT_CODE_ERR_NETWORK, DISPLAY_MSG, NO_DISPLAY_USAGE)
resp.Body = ioutil.NopCloser(bytes.NewBuffer(data))
return resp, data, werr
}
// Reload the response body to allow caller access to the body; otherwise,
// the caller will have any empty body to read
resp.Body = ioutil.NopCloser(bytes.NewBuffer(data))
Verbose("Response body size is %d bytes\n", len(data))
if !IsDebug() {
if truncatedBody, resp.Body, err = BodyTruncator(ioutil.NopCloser(bytes.NewBuffer(data))); err != nil {
return nil, data, err
}
Verbose("Response body received:\n%s\n", ObfuscateText(truncatedBody, secretToObfuscate))
} else {
obfuscatedResponse := ObfuscateText(string(data), secretToObfuscate)
Verbose("Response body received:\n%s\n", obfuscatedResponse)
Debug(DbgInfo, "Response body received (ASCII quoted string):\n%+q\n", obfuscatedResponse)
}
return resp, data, err
}