forked from micro/micro
/
helpers.go
114 lines (99 loc) · 2.24 KB
/
helpers.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package cli
import (
"encoding/json"
"fmt"
"strings"
"time"
"github.com/micro/cli"
"github.com/micro/go-micro/cmd"
clic "github.com/micro/micro/internal/command/cli"
"golang.org/x/net/context"
)
func listServices(c *cli.Context) {
rsp, err := clic.ListServices(c)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
func registerService(c *cli.Context) {
rsp, err := clic.RegisterService(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
func deregisterService(c *cli.Context) {
rsp, err := clic.DeregisterService(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
func getService(c *cli.Context) {
rsp, err := clic.GetService(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
func queryService(c *cli.Context) {
rsp, err := clic.QueryService(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
// TODO: stream via HTTP
func streamService(c *cli.Context) {
if len(c.Args()) < 2 {
fmt.Println("require service and method")
return
}
service := c.Args()[0]
method := c.Args()[1]
var request map[string]interface{}
json.Unmarshal([]byte(strings.Join(c.Args()[2:], " ")), &request)
req := (*cmd.DefaultOptions().Client).NewJsonRequest(service, method, request)
stream, err := (*cmd.DefaultOptions().Client).Stream(context.Background(), req)
if err != nil {
fmt.Printf("error calling %s.%s: %v\n", service, method, err)
return
}
if err := stream.Send(request); err != nil {
fmt.Printf("error sending to %s.%s: %v\n", service, method, err)
return
}
for {
var response map[string]interface{}
if err := stream.Recv(&response); err != nil {
fmt.Printf("error receiving from %s.%s: %v\n", service, method, err)
return
}
b, _ := json.MarshalIndent(response, "", "\t")
fmt.Println(string(b))
// artificial delay
time.Sleep(time.Millisecond * 10)
}
}
func queryHealth(c *cli.Context) {
rsp, err := clic.QueryHealth(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}
func queryStats(c *cli.Context) {
rsp, err := clic.QueryStats(c, c.Args())
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(rsp))
}