-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.js
More file actions
executable file
·32 lines (26 loc) · 869 Bytes
/
client.js
File metadata and controls
executable file
·32 lines (26 loc) · 869 Bytes
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
#!/usr/bin/env node
const grpc = require('grpc')
const { always, isEmpty, join, pipe, slice, tryCatch, unary, when } = require('ramda')
const KittensService = grpc.load('./proto/kittens.proto').kittens.KittensCRUD
const client = new KittensService('localhost:9002', grpc.credentials.createInsecure())
const getPayload = pipe(
slice(3, Infinity),
join(''),
when(isEmpty, always('{}')),
tryCatch(unary(JSON.parse), err => {
console.error(err.message)
process.exit(1)
}))
const payload = getPayload(process.argv)
const method = client[process.argv[2]]
if (!method) {
console.error(`Method ${process.argv[2]} does not exist!`)
process.exit(1)
}
client[process.argv[2]](payload, (err, res) => {
if (err) {
console.error(err.message)
process.exit(1)
}
console.log(JSON.stringify(res, null, 2))
})