58 lines
1.7 KiB
Cheetah
58 lines
1.7 KiB
Cheetah
package {{.File.Package}}_clientgrpc
|
|
|
|
import (
|
|
context "context"
|
|
|
|
"github.com/go-kit/kit/log"
|
|
"google.golang.org/grpc"
|
|
grpctransport "github.com/go-kit/kit/transport/grpc"
|
|
"github.com/go-kit/kit/endpoint"
|
|
jwt "github.com/go-kit/kit/auth/jwt"
|
|
|
|
pb "{{cat .GoPWD "/" .DestinationDir | nospace | clean}}/pb"
|
|
endpoints "{{cat .GoPWD "/" .DestinationDir | nospace | clean}}/endpoints"
|
|
)
|
|
|
|
{{$file:=.File}}
|
|
|
|
func New(conn *grpc.ClientConn, logger log.Logger) pb.{{.File.Package | title}}ServiceServer {
|
|
{{range .Service.Method}}
|
|
{{if and (not .ServerStreaming) (not .ClientStreaming)}}
|
|
var {{.Name | lower}}Endpoint endpoint.Endpoint
|
|
{
|
|
{{.Name | lower}}Endpoint = grpctransport.NewClient(
|
|
conn,
|
|
"{{$file.Package}}.{{$file.Package | title}}Service",
|
|
"{{.Name}}",
|
|
Encode{{.Name}}Request,
|
|
Decode{{.Name}}Response,
|
|
pb.{{.Name}}Response{},
|
|
append([]grpctransport.ClientOption{}, grpctransport.ClientBefore(jwt.FromGRPCContext()))...,
|
|
).Endpoint()
|
|
}
|
|
{{end}}
|
|
{{end}}
|
|
|
|
return &endpoints.Endpoints {
|
|
{{range .Service.Method}}
|
|
{{if and (not .ServerStreaming) (not .ClientStreaming)}}
|
|
{{.Name | title}}Endpoint: {{.Name | lower}}Endpoint,
|
|
{{end}}
|
|
{{end}}
|
|
}
|
|
}
|
|
|
|
{{range .Service.Method}}
|
|
{{if and (not .ServerStreaming) (not .ClientStreaming)}}
|
|
func Encode{{.Name}}Request(_ context.Context, request interface{}) (interface{}, error) {
|
|
req := request.(*pb.{{.Name}}Request)
|
|
return req, nil
|
|
}
|
|
|
|
func Decode{{.Name}}Response(_ context.Context, grpcResponse interface{}) (interface{}, error) {
|
|
response := grpcResponse.(*pb.{{.Name}}Response)
|
|
return response, nil
|
|
}
|
|
{{end}}
|
|
{{end}}
|