當前位置: 首頁>>代碼示例>>Golang>>正文


Golang Action.URL方法代碼示例

本文整理匯總了Golang中github.com/rightscale/rsc/metadata.Action.URL方法的典型用法代碼示例。如果您正苦於以下問題:Golang Action.URL方法的具體用法?Golang Action.URL怎麽用?Golang Action.URL使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/rightscale/rsc/metadata.Action的用法示例。


在下文中一共展示了Action.URL方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: ParseCommandAndFlags

// ParseCommandAndFlags parses a command flag and infers the resource, action, href and params.
func (a *API) ParseCommandAndFlags(cmd, hrefPrefix string, values ActionCommands) (*CommandTarget, []string, error) {
	resource, vars, err := a.parseResource(cmd, hrefPrefix, values)
	if err != nil {
		return nil, nil, err
	}
	var action *metadata.Action
	elems := strings.Split(cmd, " ")
	actionName := elems[len(elems)-1]
	for _, a := range resource.Actions {
		if a.Name == actionName {
			action = a
			break
		}
	}
	if action == nil {
		supported := make([]string, len(resource.Actions))
		for i, a := range resource.Actions {
			supported[i] = a.Name
		}
		return nil, nil, fmt.Errorf("Unknown %s action '%s'. Supported actions are: %s",
			resource.Name, actionName, strings.Join(supported, ", "))
	}

	path, err := action.URL(vars)
	if err != nil {
		return nil, nil, err
	}
	flags := values[cmd]

	return &CommandTarget{resource, action, path, flags.Href}, flags.Params, nil
}
開發者ID:lopaka,項目名稱:rsc,代碼行數:32,代碼來源:commands.go

示例2: ActionPath

// ActionPath computes the path to the given resource action. For example given the href
// "/api/servers/123" calling ActionPath with resource "servers" and action "clone" returns the path
// "/api/servers/123/clone" and verb POST.
// The algorithm consists of extracting the variables from the href by looking up a matching
// pattern from the resource metadata. The variables are then substituted in the action path.
// If there are more than one pattern that match the href then the algorithm picks the one that can
// substitute the most variables.
func (r *Href) ActionPath(rName, aName string) (*metadata.ActionPath, error) {
	res, ok := GenMetadata[rName]
	if !ok {
		return nil, fmt.Errorf("No resource with name '%s'", rName)
	}
	var action *metadata.Action
	for _, a := range res.Actions {
		if a.Name == aName {
			action = a
			break
		}
	}
	if action == nil {
		return nil, fmt.Errorf("No action with name '%s' on %s", aName, rName)
	}
	vars, err := res.ExtractVariables(string(*r))
	if err != nil {
		return nil, err
	}
	return action.URL(vars)
}
開發者ID:lopaka,項目名稱:rsc,代碼行數:28,代碼來源:codegen_client.go

示例3:

			// Out
			url string
			err error

			// Test data
			prefix = "/a/path/pattern/with/one/"
			p1     = &metadata.PathPattern{"GET", prefix + "%s", []string{"a"}, nil}
			p2     = &metadata.PathPattern{"GET", "%s%s", []string{"a", "b"}, nil}
			a      = metadata.PathVariable{"a", "1"}
			b      = metadata.PathVariable{"b", "2"}
		)

		JustBeforeEach(func() {
			var p *metadata.ActionPath
			p, err = action.URL(variables)
			if err == nil {
				url = p.Path
			}
		})

		Context("with a single matching pattern", func() {
			BeforeEach(func() {
				action = &metadata.Action{
					PathPatterns: []*metadata.PathPattern{p1},
				}
				variables = []*metadata.PathVariable{&a}
			})

			It("returns the URL", func() {
				Ω(url).Should(Equal(prefix + a.Value))
開發者ID:lopaka,項目名稱:rsc,代碼行數:30,代碼來源:action_test.go


注:本文中的github.com/rightscale/rsc/metadata.Action.URL方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。