add helper like httpPath for get path in additional bindings options

This commit is contained in:
Thomas KERAMBLOCH 2018-02-13 15:57:07 +01:00
parent 15ac366c8d
commit 0c29a9922f

View File

@ -117,6 +117,7 @@ var ProtoHelpersFuncMap = template.FuncMap{
"namespacedFlowType": namespacedFlowType, "namespacedFlowType": namespacedFlowType,
"httpVerb": httpVerb, "httpVerb": httpVerb,
"httpPath": httpPath, "httpPath": httpPath,
"httpPathsAdditionalBindings": httpPathsAdditionalBindings,
"httpBody": httpBody, "httpBody": httpBody,
"shortType": shortType, "shortType": shortType,
"urlHasVarsFromMessage": urlHasVarsFromMessage, "urlHasVarsFromMessage": urlHasVarsFromMessage,
@ -726,6 +727,40 @@ func httpPath(m *descriptor.MethodDescriptorProto) string {
} }
} }
func httpPathsAdditionalBindings(m *descriptor.MethodDescriptorProto) []string {
ext, err := proto.GetExtension(m.Options, options.E_Http)
if err != nil {
panic(err.Error())
}
opts, ok := ext.(*options.HttpRule)
if !ok {
panic(fmt.Sprintf("extension is %T; want an HttpRule", ext))
}
var httpPaths []string
var optsAdditionalBindings = opts.GetAdditionalBindings()
for _, optAdditionalBindings := range optsAdditionalBindings {
switch t := optAdditionalBindings.Pattern.(type) {
case *options.HttpRule_Get:
httpPaths = append(httpPaths, t.Get)
case *options.HttpRule_Post:
httpPaths = append(httpPaths, t.Post)
case *options.HttpRule_Put:
httpPaths = append(httpPaths, t.Put)
case *options.HttpRule_Delete:
httpPaths = append(httpPaths, t.Delete)
case *options.HttpRule_Patch:
httpPaths = append(httpPaths, t.Patch)
case *options.HttpRule_Custom:
httpPaths = append(httpPaths, t.Custom.Path)
default:
// nothing
}
}
return httpPaths
}
func httpVerb(m *descriptor.MethodDescriptorProto) string { func httpVerb(m *descriptor.MethodDescriptorProto) string {
ext, err := proto.GetExtension(m.Options, options.E_Http) ext, err := proto.GetExtension(m.Options, options.E_Http)