in whisk/client.go [550:578]
func parseErrorResponse(resp *http.Response, data []byte, v interface{}) (*http.Response, error) {
Debug(DbgInfo, "HTTP failure %d + body\n", resp.StatusCode)
// Determine if an application error was received (#5)
buf := bytes.NewBuffer(data)
d := json.NewDecoder(buf)
d.UseNumber()
errorResponse := &ErrorResponse{Response: resp}
err := d.Decode(&errorResponse)
// Determine if error is an application error or an error generated by API
if err == nil {
if errorResponse.Code == nil /*&& errorResponse.ErrMsg != nil */ && resp.StatusCode == 502 {
return parseApplicationError(resp, data, v)
} else if errorResponse.Code != nil && errorResponse.ErrMsg != nil {
Debug(DbgInfo, "HTTP failure %d; server error %s\n", resp.StatusCode, errorResponse)
werr := MakeWskError(errorResponse, resp.StatusCode-256, DISPLAY_MSG, NO_DISPLAY_USAGE)
return resp, werr
}
}
// Body contents are unknown (#6)
Debug(DbgError, "HTTP response with unexpected body failed due to contents parsing error: '%v'\n", err)
errMsg := wski18n.T("The connection failed, or timed out. (HTTP status code {{.code}})",
map[string]interface{}{"code": resp.StatusCode})
whiskErr := MakeWskError(errors.New(errMsg), resp.StatusCode-256, DISPLAY_MSG, NO_DISPLAY_USAGE)
return resp, whiskErr
}