|
@@ -0,0 +1,43 @@
|
|
|
+package example
|
|
|
+
|
|
|
+import com.github.plokhotnyuk.jsoniter_scala.core._
|
|
|
+import com.github.plokhotnyuk.jsoniter_scala.macros._
|
|
|
+import io.undertow.{Undertow, UndertowOptions}
|
|
|
+
|
|
|
+case class Message(message: String)
|
|
|
+
|
|
|
+object Main extends cask.MainRoutes {
|
|
|
+
|
|
|
+ implicit val codec: JsonValueCodec[Message] = JsonCodecMaker.make[Message](CodecMakerConfig())
|
|
|
+
|
|
|
+ override def main(args: Array[String]): Unit = {
|
|
|
+ val server = Undertow.builder
|
|
|
+ .addHttpListener(8080, "0.0.0.0")
|
|
|
+ // increase io thread count as per https://github.com/TechEmpower/FrameworkBenchmarks/pull/4008
|
|
|
+ .setIoThreads(Runtime.getRuntime().availableProcessors() * 2)
|
|
|
+ // In HTTP/1.1, connections are persistent unless declared otherwise.
|
|
|
+ // Adding a "Connection: keep-alive" header to every response would only
|
|
|
+ // add useless bytes.
|
|
|
+ .setServerOption[java.lang.Boolean](UndertowOptions.ALWAYS_SET_KEEP_ALIVE, false)
|
|
|
+ .setHandler(defaultHandler)
|
|
|
+ .build
|
|
|
+ server.start()
|
|
|
+ }
|
|
|
+
|
|
|
+ @cask.get("/plaintext")
|
|
|
+ def plaintext() = {
|
|
|
+ cask.Response(data = "Hello, World!",
|
|
|
+ headers = Seq("Server" -> "cask", "Content-Type" -> "text/plain")
|
|
|
+ )
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @cask.get("/json")
|
|
|
+ def json(request: cask.Request) = {
|
|
|
+ cask.Response(data = writeToArray(Message("Hello, World!")),
|
|
|
+ headers = Seq("Server" -> "cask", "Content-Type" -> "application/json")
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ initialize()
|
|
|
+}
|