本文整理汇总了Golang中github.com/rightscale/rsc/metadata.Action类的典型用法代码示例。如果您正苦于以下问题:Golang Action类的具体用法?Golang Action怎么用?Golang Action使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Action类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: ParseCommandAndFlags
// Parse command and flags and infer 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:dylanmei,项目名称:rsc,代码行数:32,代码来源:commands.go
示例2: IdentifyParams
// IdentifyParams organizes the given params in two groups: the payload params and the query params.
func IdentifyParams(a *metadata.Action, params APIParams) (payloadParams APIParams, queryParams APIParams) {
payloadParamNames := a.PayloadParamNames()
payloadParams = make(APIParams)
for _, n := range payloadParamNames {
if p, ok := params[n]; ok {
payloadParams[n] = p
}
}
queryParamNames := a.QueryParamNames()
queryParams = make(APIParams)
for _, n := range queryParamNames {
if p, ok := params[n]; ok {
queryParams[n] = p
}
}
return payloadParams, queryParams
}
开发者ID:lopaka,项目名称:rsc,代码行数:18,代码来源:http.go
示例3: 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:dylanmei,项目名称:rsc,代码行数:28,代码来源:codegen_client.go
示例4:
It("returns an empty string and the unmatched variables", func() {
Ω(path).Should(BeEmpty())
Ω(names).Should(Equal([]string{"d"}))
})
})
})
Context("Action Url", func() {
var (
// In
action *metadata.Action
variables []*metadata.PathVariable
// 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
}
})
开发者ID:dylanmei,项目名称:rsc,代码行数:32,代码来源:action_test.go
示例5:
It("returns an empty string and the unmatched variables", func() {
Ω(path).Should(BeEmpty())
Ω(names).Should(Equal([]string{"d"}))
})
})
})
Context("Action Url", func() {
var (
// In
action *metadata.Action
variables []*metadata.PathVariable
// 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
}
})
开发者ID:lopaka,项目名称:rsc,代码行数:32,代码来源:action_test.go
注:本文中的github.com/rightscale/rsc/metadata.Action类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论