diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-19 21:50:51 +0100 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-19 21:53:21 +0100 |
| commit | cd061d43cbc7201649bdfd166870a44d37a0588f (patch) | |
| tree | 57d8a3e505654089bad7233e640d4ac0237c62cc /example | |
| parent | 155d1c06db73fc10d88ab39bb6d580494ad8a3f8 (diff) | |
| download | nimtwirp-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/Makefile | 2 | ||||
| -rw-r--r-- | example/haberdasherserver.nim | 17 |
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) |
