extracted renderImports

This commit is contained in:
Jan Halfar 2017-10-13 10:39:41 +02:00
parent c1fd91a7ff
commit b3976ed963

103
go.go
View File

@ -186,18 +186,7 @@ func renderTSRPCServiceProxies(services ServiceList, fullPackageName string, pac
}
}
imports := ""
for packageName, alias := range aliases {
imports += alias + " \"" + packageName + "\"\n"
}
g.l(`
// Code generated by gotsrpc https://github.com/foomo/gotsrpc DO NOT EDIT.
package ` + packageName + `
import (
` + imports + `
)
`)
g.l(renderImports(aliases, packageName))
for _, service := range services {
// Check if we should render this service as ts rcp
// Note: remove once there's a separate gorcp generator
@ -283,18 +272,14 @@ func renderTSRPCServiceProxies(services ServiceList, fullPackageName string, pac
skipArgI := 0
for argI, arg := range method.Args {
nonHTTPReleatedArgs := goMethodArgsWithoutHTTPContextRelatedArgs(method)
isSessionRequest = len(method.Args)-len(nonHTTPReleatedArgs) == 2
for _, arg := range nonHTTPReleatedArgs {
argName := "arg_" + arg.Name //strconv.Itoa(argI)
if argI == 0 && arg.Value.isHTTPResponseWriter() {
continue
}
if argI == 1 && arg.Value.isHTTPRequest() {
isSessionRequest = true
continue
}
//argsDecls = append(argsDecls, argName+" := "+arg.Value.emptyLiteral(aliases))
argsDecls = append(argsDecls, argName+" "+arg.Value.goType(aliases, packageName))
args = append(args, "&"+argName)
@ -369,18 +354,8 @@ func renderTSRPCServiceClients(services ServiceList, fullPackageName string, pac
}
}
imports := ""
for packageName, alias := range aliases {
imports += alias + " \"" + packageName + "\"\n"
}
g.l(renderImports(aliases, packageName))
g.l(`
// Code generated by gotsrpc https://github.com/foomo/gotsrpc DO NOT EDIT.
package ` + packageName + `
import (
` + imports + `
)
`)
for _, service := range services {
// Check if we should render this service as ts rcp
// Note: remove once there's a separate gorcp generator
@ -409,7 +384,7 @@ func renderTSRPCServiceClients(services ServiceList, fullPackageName string, pac
for _, method := range service.Methods {
args := []string{}
params := []string{}
for _, a := range method.Args {
for _, a := range goMethodArgsWithoutHTTPContextRelatedArgs(method) {
args = append(args, a.Name)
params = append(params, a.Name+" "+a.Value.goType(aliases, fullPackageName))
}
@ -459,18 +434,7 @@ func renderGoRPCServiceProxies(services ServiceList, fullPackageName string, pac
}
}
imports := ""
for packageName, alias := range aliases {
imports += alias + " \"" + packageName + "\"\n"
}
g.l(`
// Code generated by gotsrpc https://github.com/foomo/gotsrpc DO NOT EDIT.
package ` + packageName + `
import (
` + imports + `
)
`)
g.l(renderImports(aliases, packageName))
for _, service := range services {
if !config.IsGoRPC(service.Name) {
@ -492,7 +456,7 @@ func renderGoRPCServiceProxies(services ServiceList, fullPackageName string, pac
for _, method := range service.Methods {
// Request type
g.l(ucfirst(service.Name+method.Name) + `Request struct {`)
for _, a := range method.Args {
for _, a := range goMethodArgsWithoutHTTPContextRelatedArgs(method) {
g.l(ucfirst(a.Name) + ` ` + a.Value.goType(aliases, fullPackageName))
}
g.l(`}`)
@ -561,7 +525,12 @@ func renderGoRPCServiceProxies(services ServiceList, fullPackageName string, pac
g.l(`switch funcName {`)
for _, method := range service.Methods {
argParams := []string{}
for _, a := range method.Args {
nonHTTPRelatedMethodArgs := goMethodArgsWithoutHTTPContextRelatedArgs(method)
diffNONHTTPRelatedMethodArgs := len(method.Args) - len(nonHTTPRelatedMethodArgs)
for i := 0; i < diffNONHTTPRelatedMethodArgs; i++ {
argParams = append(argParams, "nil")
}
for _, a := range nonHTTPRelatedMethodArgs {
argParams = append(argParams, "req."+ucfirst(a.Name))
}
rets := []string{}
@ -575,7 +544,7 @@ func renderGoRPCServiceProxies(services ServiceList, fullPackageName string, pac
retParams = append(retParams, ucfirst(name)+`: `+name)
}
g.l(`case "` + service.Name + method.Name + `Request":`)
if len(argParams) > 0 {
if len(nonHTTPRelatedMethodArgs) > 0 {
g.l(`req := request.(` + service.Name + method.Name + `Request)`)
}
if len(rets) > 0 {
@ -625,13 +594,7 @@ func renderGoRPCServiceClients(services ServiceList, fullPackageName string, pac
imports += alias + " \"" + packageName + "\"\n"
}
g.l(`
// Code generated by gotsrpc https://github.com/foomo/gotsrpc DO NOT EDIT.
package ` + packageName + `
import (
` + imports + `
)
`)
g.l(renderImports(aliases, packageName))
for _, service := range services {
if !config.IsGoRPC(service.Name) {
continue
@ -668,7 +631,7 @@ func renderGoRPCServiceClients(services ServiceList, fullPackageName string, pac
for _, method := range service.Methods {
args := []string{}
params := []string{}
for _, a := range method.Args {
for _, a := range goMethodArgsWithoutHTTPContextRelatedArgs(method) {
args = append(args, ucfirst(a.Name)+`: `+a.Name)
params = append(params, a.Name+" "+a.Value.goType(aliases, fullPackageName))
}
@ -746,3 +709,31 @@ func RenderGoRPCClients(services ServiceList, longPackageName, packageName strin
gocode = g.string()
return
}
func goMethodArgsWithoutHTTPContextRelatedArgs(m *Method) (filteredArgs []*Field) {
filteredArgs = []*Field{}
for argI, arg := range m.Args {
if argI == 0 && arg.Value.isHTTPResponseWriter() {
continue
}
if argI == 1 && arg.Value.isHTTPRequest() {
continue
}
filteredArgs = append(filteredArgs, arg)
}
return
}
func renderImports(aliases map[string]string, packageName string) string {
imports := ""
for importPath, alias := range aliases {
imports += alias + " \"" + importPath + "\"\n"
}
return `
// Code generated by gotsrpc https://github.com/foomo/gotsrpc DO NOT EDIT.
package ` + packageName + `
import (
` + imports + `
)
`
}