本文整理汇总了Golang中github.com/goadesign/goa/design.ResourceDefinition.IterateFileServers方法的典型用法代码示例。如果您正苦于以下问题:Golang ResourceDefinition.IterateFileServers方法的具体用法?Golang ResourceDefinition.IterateFileServers怎么用?Golang ResourceDefinition.IterateFileServers使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/goadesign/goa/design.ResourceDefinition
的用法示例。
在下文中一共展示了ResourceDefinition.IterateFileServers方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: generateResourceClient
func (g *Generator) generateResourceClient(pkgDir string, res *design.ResourceDefinition, funcs template.FuncMap) error {
payloadTmpl := template.Must(template.New("payload").Funcs(funcs).Parse(payloadTmpl))
pathTmpl := template.Must(template.New("pathTemplate").Funcs(funcs).Parse(pathTmpl))
resFilename := codegen.SnakeCase(res.Name)
if resFilename == typesFileName {
// Avoid clash with datatypes.go
resFilename += "_client"
}
filename := filepath.Join(pkgDir, resFilename+".go")
file, err := codegen.SourceFileFor(filename)
if err != nil {
return err
}
imports := []*codegen.ImportSpec{
codegen.SimpleImport("bytes"),
codegen.SimpleImport("encoding/json"),
codegen.SimpleImport("fmt"),
codegen.SimpleImport("io"),
codegen.SimpleImport("io/ioutil"),
codegen.SimpleImport("net/http"),
codegen.SimpleImport("net/url"),
codegen.SimpleImport("os"),
codegen.SimpleImport("path"),
codegen.SimpleImport("strconv"),
codegen.SimpleImport("strings"),
codegen.SimpleImport("time"),
codegen.SimpleImport("golang.org/x/net/context"),
codegen.SimpleImport("golang.org/x/net/websocket"),
codegen.NewImport("uuid", "github.com/goadesign/goa/uuid"),
}
if err := file.WriteHeader("", g.Target, imports); err != nil {
return err
}
g.genfiles = append(g.genfiles, filename)
err = res.IterateFileServers(func(fs *design.FileServerDefinition) error {
return g.generateFileServer(file, fs, funcs)
})
err = res.IterateActions(func(action *design.ActionDefinition) error {
if action.Payload != nil {
found := false
typeName := action.Payload.TypeName
for _, t := range design.Design.Types {
if t.TypeName == typeName {
found = true
break
}
}
if !found {
if err := payloadTmpl.Execute(file, action); err != nil {
return err
}
}
}
for i, r := range action.Routes {
data := struct {
Route *design.RouteDefinition
Index int
}{
Route: r,
Index: i,
}
if err := pathTmpl.Execute(file, data); err != nil {
return err
}
}
return g.generateActionClient(action, file, funcs)
})
if err != nil {
return err
}
return file.FormatCode()
}