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}}