Browse Source

Udpate Finch to 0.11-M2 (#2234)

Vladimir Kostyukov 9 years ago
parent
commit
f63b3a0ecf

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

@@ -1,20 +1,18 @@
 name := """techempower-benchmarks-finch"""
 name := """techempower-benchmarks-finch"""
 
 
-version := "0.0.3"
+version := "0.0.4"
 
 
 scalaVersion := "2.11.8"
 scalaVersion := "2.11.8"
 
 
 com.github.retronym.SbtOneJar.oneJarSettings
 com.github.retronym.SbtOneJar.oneJarSettings
 
 
-mainClass in (Compile, run) := Some("WebServer")
-
 libraryDependencies ++= Seq(
 libraryDependencies ++= Seq(
-  "com.twitter" %% "finagle-http" % "6.34.0",
-  "com.github.finagle" %% "finch-core" % "0.10.0",
-  "com.github.finagle" %% "finch-circe" % "0.10.0",
-  "io.circe" %% "circe-core" % "0.4.1",
-  "io.circe" %% "circe-generic" % "0.4.1",
-  "io.circe" %% "circe-jawn" % "0.4.1"
+  "com.twitter" %% "finagle-http" % "6.36.0",
+  "com.github.finagle" %% "finch-core" % "0.11.0-M2",
+  "com.github.finagle" %% "finch-circe" % "0.11.0-M2",
+  "io.circe" %% "circe-core" % "0.5.0-M2",
+  "io.circe" %% "circe-generic" % "0.5.0-M2",
+  "io.circe" %% "circe-jawn" % "0.5.0-M2"
 )
 )
 
 
 resolvers += Resolver.sonatypeRepo("snapshots")
 resolvers += Resolver.sonatypeRepo("snapshots")

+ 46 - 0
frameworks/Scala/finch/src/main/scala/Main.scala

@@ -0,0 +1,46 @@
+import java.time.format.DateTimeFormatter
+import java.time.{Instant, ZoneOffset}
+
+import com.twitter.io.Buf
+import com.twitter.finagle.http.Response
+import com.twitter.finagle.Http
+import com.twitter.finagle.stats.NullStatsReceiver
+import com.twitter.finagle.tracing.NullTracer
+import com.twitter.util.Await
+
+import io.circe.Json
+import io.finch._
+import io.finch.circe._
+
+object Main extends App {
+
+  val timeFormatter: DateTimeFormatter = 
+    DateTimeFormatter.RFC_1123_DATE_TIME.withZone(ZoneOffset.UTC)
+
+  val helloWorld: Buf = Buf.Utf8("Hello, World!")
+
+  val json: Endpoint[Json] = get("json") {
+    Ok(Json.obj("message" -> Json.fromString("Hello, World!")))
+      .withHeader("Server" -> "Finch")
+      .withHeader("Date" -> timeFormatter.format(Instant.now()))
+  }
+
+  // Downgrade a text/plain endpoint to `Endpoint[Response]` as per
+  // https://github.com/finagle/finch/blob/master/docs/cookbook.md#serving-multiple-content-types
+  val plaintext: Endpoint[Response] = get("plaintext") {
+    val rep = Response()
+    rep.content = helloWorld
+    rep.contentType = "text/plain"
+    rep.headerMap.set("Server", "Finch")
+    rep.headerMap.set("Date", timeFormatter.format(Instant.now()))
+
+    Ok(rep)
+  }
+
+  Await.ready(Http.server
+    .withCompressionLevel(0)
+    .withStatsReceiver(NullStatsReceiver)
+    .withTracer(NullTracer)
+    .serve(":9000", (json :+: plaintext).toServiceAs[Application.Json])
+  )
+}

+ 0 - 42
frameworks/Scala/finch/src/main/scala/WebServer.scala

@@ -1,42 +0,0 @@
-import java.net.InetSocketAddress
-import java.text.{DateFormat, SimpleDateFormat}
-import java.util.Date
-
-import io.finch._
-
-import com.twitter.finagle.Service
-import com.twitter.finagle.Http
-import com.twitter.finagle.stats.NullStatsReceiver
-import com.twitter.finagle.tracing.NullTracer
-import com.twitter.util.Await
-
-import io.circe._
-import io.circe.generic.auto._
-import io.circe.jawn._
-import io.circe.syntax._
-import io.circe.{Decoder, Encoder, Json}
-
-object WebServer extends App {
-  private val dateFormat: DateFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z")
-
-  import io.finch.circe._
-  val json = get("json") {
-    Ok(Json.obj("message" -> Json.string("Hello, World!")))
-      .withHeader("Server" -> "finch")
-      .withHeader("Date" -> dateFormat.format(new Date()))
-  }
-
-  val plaintext: Endpoint[String] = get("plaintext") {
-    Ok("Hello, World!")
-      .withHeader("Server" -> "finch")
-      .withHeader("Date" -> dateFormat.format(new Date()))
-      .withContentType(Some("text/plain"))
-  }
-
-  Await.ready(Http.server
-    .withCompressionLevel(0)
-    .withStatsReceiver(NullStatsReceiver)
-    .withTracer(NullTracer)
-    .serve(":9000", (json :+: plaintext).toService)
-  )
-}