本文整理汇总了Golang中github.com/goadesign/goa/design.ActionDefinition.CanonicalScheme方法的典型用法代码示例。如果您正苦于以下问题:Golang ActionDefinition.CanonicalScheme方法的具体用法?Golang ActionDefinition.CanonicalScheme怎么用?Golang ActionDefinition.CanonicalScheme使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/goadesign/goa/design.ActionDefinition
的用法示例。
在下文中一共展示了ActionDefinition.CanonicalScheme方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: generateActionClient
func (g *Generator) generateActionClient(action *design.ActionDefinition, file *codegen.SourceFile, funcs template.FuncMap) error {
var (
params []string
names []string
queryParams []*paramData
headers []*paramData
signer string
clientsTmpl = template.Must(template.New("clients").Funcs(funcs).Parse(clientsTmpl))
requestsTmpl = template.Must(template.New("requests").Funcs(funcs).Parse(requestsTmpl))
clientsWSTmpl = template.Must(template.New("clientsws").Funcs(funcs).Parse(clientsWSTmpl))
)
if action.Payload != nil {
params = append(params, "payload "+codegen.GoTypeRef(action.Payload, action.Payload.AllRequired(), 1, false))
names = append(names, "payload")
}
initParams := func(att *design.AttributeDefinition) []*paramData {
if att == nil {
return nil
}
obj := att.Type.ToObject()
var pdata []*paramData
var optData []*paramData
for n, q := range obj {
varName := codegen.Goify(n, false)
param := ¶mData{
Name: n,
VarName: varName,
Attribute: q,
}
if q.Type.IsPrimitive() {
param.MustToString = q.Type.Kind() != design.StringKind
if att.IsRequired(n) {
param.ValueName = varName
pdata = append(pdata, param)
} else {
param.ValueName = "*" + varName
param.CheckNil = true
optData = append(optData, param)
}
} else {
if q.Type.IsArray() {
param.IsArray = true
param.ElemAttribute = q.Type.ToArray().ElemType
}
param.MustToString = true
param.ValueName = varName
param.CheckNil = true
if att.IsRequired(n) {
pdata = append(pdata, param)
} else {
optData = append(optData, param)
}
}
}
sort.Sort(byParamName(pdata))
sort.Sort(byParamName(optData))
// Update closure
for _, p := range pdata {
names = append(names, p.VarName)
params = append(params, p.VarName+" "+cmdFieldType(p.Attribute.Type, false))
}
for _, p := range optData {
names = append(names, p.VarName)
params = append(params, p.VarName+" "+cmdFieldType(p.Attribute.Type, p.Attribute.Type.IsPrimitive()))
}
return append(pdata, optData...)
}
queryParams = initParams(action.QueryParams)
headers = initParams(action.Headers)
if action.Security != nil {
signer = codegen.Goify(action.Security.Scheme.SchemeName, true)
}
data := struct {
Name string
ResourceName string
Description string
Routes []*design.RouteDefinition
HasPayload bool
Params string
ParamNames string
CanonicalScheme string
Signer string
QueryParams []*paramData
Headers []*paramData
}{
Name: action.Name,
ResourceName: action.Parent.Name,
Description: action.Description,
Routes: action.Routes,
HasPayload: action.Payload != nil,
Params: strings.Join(params, ", "),
ParamNames: strings.Join(names, ", "),
CanonicalScheme: action.CanonicalScheme(),
Signer: signer,
QueryParams: queryParams,
Headers: headers,
}
//.........这里部分代码省略.........