mirror of
https://github.com/go-micro/go-micro.git
synced 2024-11-24 08:02:32 +02:00
66 lines
1.3 KiB
Go
66 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"strings"
|
|
|
|
hello "github.com/asim/go-micro/examples/v3/greeter/srv/proto/hello"
|
|
"github.com/asim/go-micro/v3"
|
|
"github.com/asim/go-micro/v3/errors"
|
|
roundrobin "github.com/asim/go-micro/plugins/wrapper/select/roundrobin/v3"
|
|
api "github.com/asim/go-micro/v3/api/proto"
|
|
|
|
"context"
|
|
)
|
|
|
|
type Say struct {
|
|
Client hello.SayService
|
|
}
|
|
|
|
func (s *Say) Hello(ctx context.Context, req *api.Request, rsp *api.Response) error {
|
|
log.Print("Received Say.Hello API request")
|
|
|
|
name, ok := req.Get["name"]
|
|
if !ok || len(name.Values) == 0 {
|
|
return errors.BadRequest("go.micro.api.greeter", "Name cannot be blank")
|
|
}
|
|
|
|
response, err := s.Client.Hello(ctx, &hello.Request{
|
|
Name: strings.Join(name.Values, " "),
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
rsp.StatusCode = 200
|
|
b, _ := json.Marshal(map[string]string{
|
|
"message": response.Msg,
|
|
})
|
|
rsp.Body = string(b)
|
|
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
wrapper := roundrobin.NewClientWrapper()
|
|
|
|
service := micro.NewService(
|
|
micro.Name("go.micro.api.greeter"),
|
|
micro.WrapClient(wrapper),
|
|
)
|
|
|
|
// parse command line flags
|
|
service.Init()
|
|
|
|
service.Server().Handle(
|
|
service.Server().NewHandler(
|
|
&Say{Client: hello.NewSayService("go.micro.srv.greeter", service.Client())},
|
|
),
|
|
)
|
|
|
|
if err := service.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|