/
client.go
50 lines (42 loc) · 1.11 KB
/
client.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package item
import (
"golang.org/x/net/context"
"google.golang.org/grpc"
"github.com/masakazutakewaka/grpc-proto/item/pb"
)
type Client struct {
conn *grpc.ClientConn
service pb.ItemServiceClient
}
func NewClient(url string) (*Client, error) {
conn, err := grpc.Dial(url, grpc.WithInsecure())
if err != nil {
return nil, err
}
client := pb.NewItemServiceClient(conn)
return &Client{conn, client}, nil
}
func (client *Client) Close() {
client.conn.Close()
}
func (client *Client) GetItem(ctx context.Context, id int32) (*pb.Item, error) {
res, err := client.service.GetItem(ctx, &pb.GetItemRequest{Id: id})
if err != nil {
return nil, err
}
return res.Item, nil
}
func (client *Client) GetItems(ctx context.Context, ids []int32) ([]*pb.Item, error) {
res, err := client.service.GetItems(ctx, &pb.GetItemsRequest{Ids: ids})
if err != nil {
return nil, err
}
return res.Items, nil
}
func (client *Client) PostItem(ctx context.Context, name string, price int32) error {
_, err := client.service.PostItem(ctx, &pb.PostItemRequest{Name: name, Price: price})
if err != nil {
return err
}
return nil
}