func()

in whisk/action.go [129:162]


func (action Action) ActionURL(apiHost string, apiPath string, apiVersion string, pkg string) (string, error) {
	baseURL, err := GetURLBase(apiHost, apiPath)
	if err != nil {
		Debug(DbgError, "GetURLBase(%s, %s) failed: %s\n", apiHost, apiPath, err)
		return "", err
	}
	webActionPath := "%s/%s/web/%s/%s/%s"
	actionPath := "%s/%s/namespaces/%s/actions/%s"
	packagedActionPath := actionPath + "/%s"
	namespace := strings.Split(action.Namespace, "/")[0]
	namespace = strings.Replace(url.QueryEscape(namespace), "+", "%20", -1)
	name := strings.Replace(url.QueryEscape(action.Name), "+", "%20", -1)
	pkg = strings.Replace(url.QueryEscape(pkg), "+", "%20", -1)

	var actionURL string
	if action.WebAction() {
		if len(pkg) == 0 {
			pkg = "default"
		}

		actionURL = fmt.Sprintf(webActionPath, baseURL, apiVersion, namespace, pkg, name)
		Debug(DbgInfo, "Web action URL: %s\n", actionURL)
	} else {
		if len(pkg) == 0 {
			actionURL = fmt.Sprintf(actionPath, baseURL, apiVersion, namespace, name)
			Debug(DbgInfo, "Packaged action URL: %s\n", actionURL)
		} else {
			actionURL = fmt.Sprintf(packagedActionPath, baseURL, apiVersion, namespace, pkg, name)
			Debug(DbgInfo, "Action URL: %s\n", actionURL)
		}
	}

	return actionURL, nil
}