|
@@ -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)
|
|
|
)
|
|
|
}
|