Browse Source

Merge pull request #1732 from whiplash/master

new finch version
blee-techempower 9 years ago
parent
commit
d5b976a076

+ 7 - 4
frameworks/Scala/finch/build.sbt

@@ -1,16 +1,19 @@
 name := """techempower-benchmarks-finch"""
 
-version := "0.0.1-SNAPSHOT"
+version := "0.0.2"
 
-scalaVersion := "2.11.6"
+scalaVersion := "2.11.7"
 
 com.github.retronym.SbtOneJar.oneJarSettings
 
 mainClass in (Compile, run) := Some("WebServer")
 
 libraryDependencies ++= Seq(
-  "com.github.finagle" %% "finch-core" % "0.7.1",
-  "com.github.finagle" %% "finch-argonaut" % "0.7.1"
+  "com.github.finagle" %% "finch-core" % "0.8.0",
+  "com.github.finagle" %% "finch-circe" % "0.8.0",
+  "io.circe" %% "circe-core" % "0.1.1",
+  "io.circe" %% "circe-generic" % "0.1.1",
+  "io.circe" %% "circe-jawn" % "0.1.1"
 )
 
 resolvers += Resolver.sonatypeRepo("snapshots")

+ 19 - 15
frameworks/Scala/finch/src/main/scala/WebServer.scala

@@ -1,34 +1,38 @@
 import java.net.InetSocketAddress
 
-import argonaut._, Argonaut._
-
 import io.finch._
-import io.finch.{Endpoint => _, _}
-
 import io.finch.route._
-import io.finch.route.Endpoint
 import io.finch.response._
 
 import com.twitter.finagle.Service
 import com.twitter.finagle.Httpx
+import com.twitter.finagle.httpx.{Response, Request}
 
 import com.twitter.util.Await
 
+import io.circe._
+import io.circe.generic.auto._
+import io.circe.jawn._
+import io.circe.syntax._
+import io.finch.response.EncodeResponse
+import io.circe.{Decoder, Encoder, Json}
+
 object WebServer extends App {
 
-  val json: Endpoint[HttpRequest, HttpResponse] = {
-    import io.finch.argonaut._
-    Get / "json" /> Ok(Json("message" -> jString("Hello, World!"))).toFuture
+  val json = get("json") {
+    import io.finch.circe._
+
+    case class Message(message: String)
+    Ok(Message("Hello, World!").asJson)
   }
 
-  val plaintext: Endpoint[HttpRequest, HttpResponse] =
-    Get / "plaintext" /> Ok("Hello, World!").toFuture
+  val plaintext = get("plaintext") {
+    "Hello, World!"
+  }
 
-  val api: Service[HttpRequest, HttpResponse] = plaintext | json
+  val api: Service[Request, Response] = (json :+: plaintext).toService
 
   Await.ready(
-    Httpx.serve(
-      "0.0.0.0:9000", api
-    )
+    Httpx.serve(":9000", api)
   )
-}
+}