aboutsummaryrefslogtreecommitdiff
path: root/example/haberdasherserver.nim
diff options
context:
space:
mode:
Diffstat (limited to 'example/haberdasherserver.nim')
-rw-r--r--example/haberdasherserver.nim26
1 files changed, 26 insertions, 0 deletions
diff --git a/example/haberdasherserver.nim b/example/haberdasherserver.nim
new file mode 100644
index 0000000..a41c3b8
--- /dev/null
+++ b/example/haberdasherserver.nim
@@ -0,0 +1,26 @@
+import asynchttpserver
+import asyncdispatch
+import random
+
+import nimtwirp/errors
+
+import service_pb
+import service_twirp
+
+type
+ HaberdasherService = object
+
+proc MakeHat(x: HaberdasherService, size: twirp_example_haberdasher_Size): twirp_example_haberdasher_Hat =
+ if size.inches <= 0:
+ raise newTwirpError(TwirpInvalidArgument, "I can't make a hat that small!")
+
+ result = newtwirp_example_haberdasher_Hat()
+ result.inches = size.inches
+ result.color = rand(["white", "black", "brown", "red", "blue"])
+ result.name = rand(["bowler", "baseball cap", "top hat", "derby"])
+
+var
+ server = newAsyncHttpServer()
+ service: HaberdasherService
+
+waitFor server.serve(Port(8080), HaberdasherServer(service, "/"))