aboutsummaryrefslogtreecommitdiff
path: root/examples/multiservice/client.nim
diff options
context:
space:
mode:
Diffstat (limited to 'examples/multiservice/client.nim')
-rw-r--r--examples/multiservice/client.nim44
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/multiservice/client.nim b/examples/multiservice/client.nim
new file mode 100644
index 0000000..9df9b9b
--- /dev/null
+++ b/examples/multiservice/client.nim
@@ -0,0 +1,44 @@
+import os
+import strformat
+import strutils
+import parseopt
+
+import fooservice_pb
+import fooservice_twirp
+
+import barservice_pb
+import barservice_twirp
+
+var service = "foo"
+var value: int
+
+for kind, key, val in getopt():
+ case kind
+ of cmdArgument:
+ value = parseInt(key)
+ of cmdLongOption, cmdShortOption:
+ case key
+ of "foo", "bar": service = key
+ else:
+ echo("error: unknown option: " & key)
+ quit(QuitFailure)
+ of cmdEnd: assert(false)
+
+if service == "foo":
+ var req = newFooReq()
+ req.a = int32(value)
+ let client = newFooClient("http://localhost:8081")
+ try:
+ let resp = MakeFoo(client, req)
+ echo(&"Response from foo: {resp.b}")
+ except Exception as exc:
+ echo(&"oh no: {exc.msg}")
+else:
+ var req = newBarReq()
+ req.a = int32(value)
+ let client = newBarClient("http://localhost:8081")
+ try:
+ let resp = MakeBar(client, req)
+ echo(&"Response from bar: {resp.b}")
+ except Exception as exc:
+ echo(&"oh no: {exc.msg}")