From 4b058c8d8cc83f0e5edf73307530d8ea065d33f1 Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Sat, 21 Apr 2018 21:45:04 +0100 Subject: Move Haberdasher example under examples dir --- example/Makefile | 10 ------- example/README.md | 3 -- example/haberdasherclient.nim | 25 ---------------- example/haberdasherserver.nim | 47 ------------------------------ example/nim.cfg | 1 - example/service.proto | 22 -------------- examples/haberdasher/Makefile | 10 +++++++ examples/haberdasher/README.md | 3 ++ examples/haberdasher/haberdasherclient.nim | 25 ++++++++++++++++ examples/haberdasher/haberdasherserver.nim | 47 ++++++++++++++++++++++++++++++ examples/haberdasher/nim.cfg | 1 + examples/haberdasher/service.proto | 22 ++++++++++++++ 12 files changed, 108 insertions(+), 108 deletions(-) delete mode 100644 example/Makefile delete mode 100644 example/README.md delete mode 100644 example/haberdasherclient.nim delete mode 100644 example/haberdasherserver.nim delete mode 100644 example/nim.cfg delete mode 100644 example/service.proto create mode 100644 examples/haberdasher/Makefile create mode 100644 examples/haberdasher/README.md create mode 100644 examples/haberdasher/haberdasherclient.nim create mode 100644 examples/haberdasher/haberdasherserver.nim create mode 100644 examples/haberdasher/nim.cfg create mode 100644 examples/haberdasher/service.proto diff --git a/example/Makefile b/example/Makefile deleted file mode 100644 index 74f6709..0000000 --- a/example/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -all: haberdasherserver haberdasherclient - -haberdasherserver: haberdasherserver.nim service_pb.nim service_twirp.nim - nim c haberdasherserver.nim - -haberdasherclient: haberdasherclient.nim service_pb.nim service_twirp.nim - nim c haberdasherclient.nim - -%_pb.nim %_twirp.nim: %.proto - ../nimtwirp/nimtwirp_build -I:. --out:. $^ diff --git a/example/README.md b/example/README.md deleted file mode 100644 index acdee60..0000000 --- a/example/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Nimtwirp usage example - -This example is basically stolen from [twirp](https://twitchtv.github.io/twirp/docs/example.html). diff --git a/example/haberdasherclient.nim b/example/haberdasherclient.nim deleted file mode 100644 index d402356..0000000 --- a/example/haberdasherclient.nim +++ /dev/null @@ -1,25 +0,0 @@ -import os -import strformat -import strutils - -import service_pb -import service_twirp - -if paramCount() != 1: - echo("usage: " & getAppFilename() & " ") - quit(QuitFailure) - -var size = newtwirp_example_haberdasher_Size() -try: - size.inches = parseInt(paramStr(1)).int32 -except: - echo("invalid size") - quit(QuitFailure) - -let client = newHaberdasherClient("http://localhost:8080") - -try: - let hat = MakeHat(client, size) - echo(&"I have a nice new hat: {hat.inches} inch {hat.color} {hat.name}") -except Exception as exc: - echo(&"oh no: {exc.msg}") diff --git a/example/haberdasherserver.nim b/example/haberdasherserver.nim deleted file mode 100644 index cdb25cb..0000000 --- a/example/haberdasherserver.nim +++ /dev/null @@ -1,47 +0,0 @@ -import asynchttpserver -import asyncdispatch -import random - -import nimtwirp/nimtwirp -import nimtwirp/errors - -import service_pb -import service_twirp - -proc MakeHatImpl(service: Haberdasher, size: twirp_example_haberdasher_Size): Future[twirp_example_haberdasher_Hat] {.async.} = - 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"]) - -# You can do serving this way if you want to customize the process a bit - -var - server = newAsyncHttpServer() - service {.threadvar.}: Haberdasher - -service = newHaberdasher() -service.MakeHatImpl = MakeHatImpl - -proc handler(req: Request) {.async.} = - # Each service will have a generated handleRequest() proc which takes the - # service object and a asynchttpserver.Request object and returns a - # Future[nimtwirp.Response]. - var fut = handleRequest(service, req) - yield fut - if fut.failed: - await respond(req, nimtwirp.newResponse(fut.readError())) - else: - await respond(req, fut.read()) - -waitFor server.serve(Port(8080), handler) - -# Or this way (idea copied from Jester) if your needs are simple. -# -#var settings = newSettings(8080) -#twirpServices(settings): -# service -#runForever() diff --git a/example/nim.cfg b/example/nim.cfg deleted file mode 100644 index 8ea4922..0000000 --- a/example/nim.cfg +++ /dev/null @@ -1 +0,0 @@ ---path=".." diff --git a/example/service.proto b/example/service.proto deleted file mode 100644 index 1945a72..0000000 --- a/example/service.proto +++ /dev/null @@ -1,22 +0,0 @@ -syntax = "proto3"; - -package twirp.example.haberdasher; -option go_package = "haberdasher"; - -// Haberdasher service makes hats for clients. -service Haberdasher { - // MakeHat produces a hat of mysterious, randomly-selected color! - rpc MakeHat(Size) returns (Hat); -} - -// Size of a Hat, in inches. -message Size { - int32 inches = 1; // must be > 0 -} - -// A Hat is a piece of headwear made by a Haberdasher. -message Hat { - int32 inches = 1; - string color = 2; // anything but "invisible" - string name = 3; // i.e. "bowler" -} diff --git a/examples/haberdasher/Makefile b/examples/haberdasher/Makefile new file mode 100644 index 0000000..309144f --- /dev/null +++ b/examples/haberdasher/Makefile @@ -0,0 +1,10 @@ +all: haberdasherserver haberdasherclient + +haberdasherserver: haberdasherserver.nim service_pb.nim service_twirp.nim + nim c haberdasherserver.nim + +haberdasherclient: haberdasherclient.nim service_pb.nim service_twirp.nim + nim c haberdasherclient.nim + +%_pb.nim %_twirp.nim: %.proto + ../../nimtwirp/nimtwirp_build -I:. --out:. $^ diff --git a/examples/haberdasher/README.md b/examples/haberdasher/README.md new file mode 100644 index 0000000..acdee60 --- /dev/null +++ b/examples/haberdasher/README.md @@ -0,0 +1,3 @@ +# Nimtwirp usage example + +This example is basically stolen from [twirp](https://twitchtv.github.io/twirp/docs/example.html). diff --git a/examples/haberdasher/haberdasherclient.nim b/examples/haberdasher/haberdasherclient.nim new file mode 100644 index 0000000..d402356 --- /dev/null +++ b/examples/haberdasher/haberdasherclient.nim @@ -0,0 +1,25 @@ +import os +import strformat +import strutils + +import service_pb +import service_twirp + +if paramCount() != 1: + echo("usage: " & getAppFilename() & " ") + quit(QuitFailure) + +var size = newtwirp_example_haberdasher_Size() +try: + size.inches = parseInt(paramStr(1)).int32 +except: + echo("invalid size") + quit(QuitFailure) + +let client = newHaberdasherClient("http://localhost:8080") + +try: + let hat = MakeHat(client, size) + echo(&"I have a nice new hat: {hat.inches} inch {hat.color} {hat.name}") +except Exception as exc: + echo(&"oh no: {exc.msg}") diff --git a/examples/haberdasher/haberdasherserver.nim b/examples/haberdasher/haberdasherserver.nim new file mode 100644 index 0000000..cdb25cb --- /dev/null +++ b/examples/haberdasher/haberdasherserver.nim @@ -0,0 +1,47 @@ +import asynchttpserver +import asyncdispatch +import random + +import nimtwirp/nimtwirp +import nimtwirp/errors + +import service_pb +import service_twirp + +proc MakeHatImpl(service: Haberdasher, size: twirp_example_haberdasher_Size): Future[twirp_example_haberdasher_Hat] {.async.} = + 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"]) + +# You can do serving this way if you want to customize the process a bit + +var + server = newAsyncHttpServer() + service {.threadvar.}: Haberdasher + +service = newHaberdasher() +service.MakeHatImpl = MakeHatImpl + +proc handler(req: Request) {.async.} = + # Each service will have a generated handleRequest() proc which takes the + # service object and a asynchttpserver.Request object and returns a + # Future[nimtwirp.Response]. + var fut = handleRequest(service, req) + yield fut + if fut.failed: + await respond(req, nimtwirp.newResponse(fut.readError())) + else: + await respond(req, fut.read()) + +waitFor server.serve(Port(8080), handler) + +# Or this way (idea copied from Jester) if your needs are simple. +# +#var settings = newSettings(8080) +#twirpServices(settings): +# service +#runForever() diff --git a/examples/haberdasher/nim.cfg b/examples/haberdasher/nim.cfg new file mode 100644 index 0000000..e5cb567 --- /dev/null +++ b/examples/haberdasher/nim.cfg @@ -0,0 +1 @@ +--path="../.." diff --git a/examples/haberdasher/service.proto b/examples/haberdasher/service.proto new file mode 100644 index 0000000..1945a72 --- /dev/null +++ b/examples/haberdasher/service.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package twirp.example.haberdasher; +option go_package = "haberdasher"; + +// Haberdasher service makes hats for clients. +service Haberdasher { + // MakeHat produces a hat of mysterious, randomly-selected color! + rpc MakeHat(Size) returns (Hat); +} + +// Size of a Hat, in inches. +message Size { + int32 inches = 1; // must be > 0 +} + +// A Hat is a piece of headwear made by a Haberdasher. +message Hat { + int32 inches = 1; + string color = 2; // anything but "invisible" + string name = 3; // i.e. "bowler" +} -- cgit v1.2.3