in whisk/action.go [291:318]
func (s *ActionService) Invoke(actionName string, payload interface{}, blocking bool, result bool) (interface{}, *http.Response, error) {
var res interface{}
// Encode resource name as a path (with no query params) before inserting it into the URI
// This way any '?' chars in the name won't be treated as the beginning of the query params
actionName = (&url.URL{Path: actionName}).String()
route := fmt.Sprintf("actions/%s?blocking=%t&result=%t", actionName, blocking, result)
Debug(DbgInfo, "HTTP route: %s\n", route)
req, err := s.client.NewRequest("POST", route, payload, IncludeNamespaceInUrl)
if err != nil {
Debug(DbgError, "http.NewRequest(POST, %s, %#v) error: '%s'\n", route, payload, err)
errMsg := wski18n.T("Unable to create HTTP request for POST '{{.route}}': {{.err}}",
map[string]interface{}{"route": route, "err": err})
whiskErr := MakeWskErrorFromWskError(errors.New(errMsg), err, EXIT_CODE_ERR_NETWORK, DISPLAY_MSG,
NO_DISPLAY_USAGE)
return nil, nil, whiskErr
}
resp, err := s.client.Do(req, &res, blocking)
if err != nil {
Debug(DbgError, "s.client.Do() error - HTTP req %s; error '%s'\n", req.URL.String(), err)
return res, resp, err
}
return res, resp, nil
}