aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-04-19 21:50:51 +0100
committerOskari Timperi <oskari.timperi@iki.fi>2018-04-19 21:53:21 +0100
commitcd061d43cbc7201649bdfd166870a44d37a0588f (patch)
tree57d8a3e505654089bad7233e640d4ac0237c62cc /example
parent155d1c06db73fc10d88ab39bb6d580494ad8a3f8 (diff)
downloadnimtwirp-cd061d43cbc7201649bdfd166870a44d37a0588f.tar.gz
nimtwirp-cd061d43cbc7201649bdfd166870a44d37a0588f.zip
A bunch of changes
- use parseopt2 in nimtwirp_build - define the prefix when running nimtwirp_build (defaults to `/twirp/`) - add a TwirpResponse type - replace concept with a type having callbacks for each rpc method (a la streams.nim) - check that a request is a POST and that it has a correct Content-Type - generate only a proc for handling the service, let the user handle responding to let them customize e.g. headers
Diffstat (limited to 'example')
-rw-r--r--example/Makefile2
-rw-r--r--example/haberdasherserver.nim17
2 files changed, 12 insertions, 7 deletions
diff --git a/example/Makefile b/example/Makefile
index 63da56f..74f6709 100644
--- a/example/Makefile
+++ b/example/Makefile
@@ -7,4 +7,4 @@ haberdasherclient: haberdasherclient.nim service_pb.nim service_twirp.nim
nim c haberdasherclient.nim
%_pb.nim %_twirp.nim: %.proto
- ../nimtwirp/nimtwirp_build -I. --out=. $^
+ ../nimtwirp/nimtwirp_build -I:. --out:. $^
diff --git a/example/haberdasherserver.nim b/example/haberdasherserver.nim
index a41c3b8..ba85e83 100644
--- a/example/haberdasherserver.nim
+++ b/example/haberdasherserver.nim
@@ -3,14 +3,12 @@ import asyncdispatch
import random
import nimtwirp/errors
+import nimtwirp/response
import service_pb
import service_twirp
-type
- HaberdasherService = object
-
-proc MakeHat(x: HaberdasherService, size: twirp_example_haberdasher_Size): twirp_example_haberdasher_Hat =
+proc MakeHatImpl(service: Haberdasher, size: twirp_example_haberdasher_Size): twirp_example_haberdasher_Hat =
if size.inches <= 0:
raise newTwirpError(TwirpInvalidArgument, "I can't make a hat that small!")
@@ -21,6 +19,13 @@ proc MakeHat(x: HaberdasherService, size: twirp_example_haberdasher_Size): twirp
var
server = newAsyncHttpServer()
- service: HaberdasherService
+ service {.threadvar.}: Haberdasher
+
+service = newHaberdasher()
+service.MakeHatImpl = MakeHatImpl
+
+proc cb(req: Request) {.async.} =
+ var resp = HaberdasherHandler(service, req)
+ await respond(req, resp)
-waitFor server.serve(Port(8080), HaberdasherServer(service, "/"))
+waitFor server.serve(Port(8080), cb)