| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | package userimport (	"context"	"errors"	"github.com/go-kit/kit/transport/grpc"	"github.com/longjoy/micro-go-course/section18/pb")var (	ErrorBadRequest = errors.New("invalid request parameter"))type grpcServer struct {	checkPassword grpc.Handler}func (s *grpcServer) CheckPassword(ctx context.Context, r *pb.LoginRequest) (*pb.LoginResponse, error) {	_, resp, err := s.checkPassword.ServeGRPC(ctx, r)	if err != nil {		return nil, err	}	return resp.(*pb.LoginResponse), nil}func NewUserServer(ctx context.Context, endpoints Endpoints) pb.UserServiceServer {	return &grpcServer{		checkPassword: grpc.NewServer(			endpoints.UserEndpoint,			DecodeLoginRequest,			EncodeLoginResponse,		),	}}func DecodeLoginRequest(ctx context.Context, r interface{}) (interface{}, error) {	req := r.(*pb.LoginRequest)	return LoginForm{		Username: req.Username,		Password: req.Password,	}, nil}func EncodeLoginResponse(_ context.Context, r interface{}) (interface{}, error) {	resp := r.(LoginResult)	retStr := "fail"	if resp.Ret {		retStr = "success"	}	errStr := ""	if resp.Err != nil {		errStr = resp.Err.Error()	}	return &pb.LoginResponse{		Ret: retStr,		Err: errStr,	}, nil}
 |