Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var FileTmpl = template.Must(template.New("").Funcs(tmplFuncs).Parse(`
// Code generated by protoc-gen-jrpc-gateway. DO NOT EDIT.
// source: {{ .Name }}
{{$package := .Package}}
/*
Package {{ $package }} is a reverse proxy.
It translates gRPC into JSON-RPC 2.0
*/
package {{ $package }}
import (
"context"
"encoding/json"
"google.golang.org/protobuf/encoding/protojson"
)
{{range $service := .Service}}
{{$serviceName := $service.GetName | printf "%sJsonRpcService"}}
{{$clientName := $service.GetName | printf "%sClient"}}
type {{$serviceName}} struct {
client {{$clientName}}
}
func {{$serviceName | printf "New%s"}} (client {{$clientName}}) {{$serviceName}} {
return {{$serviceName}} {
client: client,
}
}
func (s *{{$serviceName}}) Methods() map[string]func(ctx context.Context, message json.RawMessage) (any, error) {
return map[string]func(ctx context.Context, params json.RawMessage) (any, error) {
{{range $method := $service.GetMethod}}
"{{rpcMethod $package $service.GetName $method.GetName}}": func(ctx context.Context, data json.RawMessage) (any, error) {
req := new({{methodInput $method.GetInputType}})
err := protojson.Unmarshal(data, req)
if err != nil {
return nil, err
}
return s.client.{{$method.GetName}}(ctx, req)
},
{{end}}
}
}
{{end}}
`))
FileTmpl is .jgw template
Functions ¶
Types ¶
type Generator ¶
type Generator interface {
Generate(request *plugin.CodeGeneratorRequest) ([]*plugin.CodeGeneratorResponse_File, error)
}
func NewGenerator ¶
func NewGenerator() Generator
Click to show internal directories.
Click to hide internal directories.