From dddc6bcca6074d5797a1111cd20ace5ee44b9d28 Mon Sep 17 00:00:00 2001 From: Travis Cline Date: Wed, 4 Jan 2017 14:12:48 -0800 Subject: [PATCH] Skip services that have no methods with http bindings --- protoc-gen-grpc-gateway/gengateway/template.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/protoc-gen-grpc-gateway/gengateway/template.go b/protoc-gen-grpc-gateway/gengateway/template.go index 3c3da539b95..5a3d914ef16 100644 --- a/protoc-gen-grpc-gateway/gengateway/template.go +++ b/protoc-gen-grpc-gateway/gengateway/template.go @@ -71,22 +71,26 @@ func applyTemplate(p param) (string, error) { if err := headerTemplate.Execute(w, p); err != nil { return "", err } - var methodSeen bool + var targetServices []*descriptor.Service for _, svc := range p.Services { + var methodWithBindingsSeen bool for _, meth := range svc.Methods { glog.V(2).Infof("Processing %s.%s", svc.GetName(), meth.GetName()) - methodSeen = true for _, b := range meth.Bindings { + methodWithBindingsSeen = true if err := handlerTemplate.Execute(w, binding{Binding: b}); err != nil { return "", err } } } + if methodWithBindingsSeen { + targetServices = append(targetServices, svc) + } } - if !methodSeen { + if len(targetServices) == 0 { return "", errNoTargetService } - if err := trailerTemplate.Execute(w, p.Services); err != nil { + if err := trailerTemplate.Execute(w, targetServices); err != nil { return "", err } return w.String(), nil