From b3976ed963f3f4883f9f85dfcc6038f5d32a2705 Mon Sep 17 00:00:00 2001 From: Jan Halfar Date: Fri, 13 Oct 2017 10:39:41 +0200 Subject: [PATCH] extracted renderImports --- go.go | 103 +++++++++++++++++++++++++++------------------------------- 1 file changed, 47 insertions(+), 56 deletions(-) diff --git a/go.go b/go.go index 6216453..40e2cea 100644 --- a/go.go +++ b/go.go @@ -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 + ` + ) + ` +}