Procházet zdrojové kódy

Merge pull request #1933 from mfirry/master

Finch 0.10.0
ssmith-techempower před 9 roky
rodič
revize
5dec4a95a7

+ 5 - 5
frameworks/Scala/finch/build.sbt

@@ -9,11 +9,11 @@ com.github.retronym.SbtOneJar.oneJarSettings
 mainClass in (Compile, run) := Some("WebServer")
 
 libraryDependencies ++= Seq(
-  "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"
+  "com.github.finagle" %% "finch-core" % "0.10.0",
+  "com.github.finagle" %% "finch-circe" % "0.10.0"  ,
+  "io.circe" %% "circe-core" % "0.3.0",
+  "io.circe" %% "circe-generic" % "0.3.0",
+  "io.circe" %% "circe-jawn" % "0.3.0"
 )
 
 resolvers += Resolver.sonatypeRepo("snapshots")

+ 20 - 16
frameworks/Scala/finch/src/main/scala/WebServer.scala

@@ -1,38 +1,42 @@
 import java.net.InetSocketAddress
+import java.text.{DateFormat, SimpleDateFormat}
+import java.util.Date
 
 import io.finch._
-import io.finch.route._
-import io.finch.response._
 
 import com.twitter.finagle.Service
-import com.twitter.finagle.Httpx
-import com.twitter.finagle.httpx.{Response, Request}
-
+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.finch.response.EncodeResponse
 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") {
-    import io.finch.circe._
-
-    case class Message(message: String)
-    Ok(Message("Hello, World!").asJson)
+    Ok(Json.obj("message" -> Json.string("Hello, World!")))
+      .withHeader("Server" -> "finch")
+      .withHeader("Date" -> dateFormat.format(new Date()))
   }
 
-  val plaintext = get("plaintext") {
-    "Hello, World!"
+  val plaintext: Endpoint[String] = get("plaintext") {
+    Ok("Hello, World!")
+      .withHeader("Server" -> "finch")
+      .withHeader("Date" -> dateFormat.format(new Date()))
+      .withContentType(Some("text/plain"))
   }
 
-  val api: Service[Request, Response] = (json :+: plaintext).toService
-
-  Await.ready(
-    Httpx.serve(":9000", api)
+  Await.ready(Http.server
+    .withCompressionLevel(0)
+    .withStatsReceiver(NullStatsReceiver)
+    .withTracer(NullTracer)
+    .serve(":9000", (json :+: plaintext).toService)
   )
 }