in whisk/client.go [580:621]
func parseApplicationError(resp *http.Response, data []byte, v interface{}) (*http.Response, error) {
Debug(DbgInfo, "Parsing application error\n")
whiskErrorResponse := &WhiskErrorResponse{}
err := json.Unmarshal(data, whiskErrorResponse)
// Handle application errors that occur when --result option is false (#5)
if err == nil && whiskErrorResponse != nil && whiskErrorResponse.Response != nil && whiskErrorResponse.Response.Status != nil {
Debug(DbgInfo, "Detected response status `%s` that a whisk.error(\"%#v\") was returned\n",
*whiskErrorResponse.Response.Status, whiskErrorResponse.Response.Result)
errStr := getApplicationErrorMessage(whiskErrorResponse.Response.Result)
Debug(DbgInfo, "Application error received: %s\n", errStr)
errMsg := wski18n.T("The following application error was received: {{.err}}",
map[string]interface{}{"err": errStr})
whiskErr := MakeWskError(errors.New(errMsg), resp.StatusCode-256, NO_DISPLAY_MSG, NO_DISPLAY_USAGE,
NO_MSG_DISPLAYED, DISPLAY_PREFIX, APPLICATION_ERR)
return parseSuccessResponse(resp, data, v), whiskErr
}
appErrResult := &AppErrorResult{}
err = json.Unmarshal(data, appErrResult)
// Handle application errors that occur with blocking invocations when --result option is true (#5)
if err == nil && appErrResult.Error != nil {
Debug(DbgInfo, "Error code is null, blocking with result invocation error has occurred\n")
errStr := getApplicationErrorMessage(*appErrResult.Error)
Debug(DbgInfo, "Application error received: %s\n", errStr)
whiskErr := MakeWskError(errors.New(errStr), resp.StatusCode-256, NO_DISPLAY_MSG, NO_DISPLAY_USAGE,
NO_MSG_DISPLAYED, DISPLAY_PREFIX, APPLICATION_ERR)
return parseSuccessResponse(resp, data, v), whiskErr
}
// 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
}