WebServer.scala 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import java.net.InetSocketAddress
  2. import java.text.{DateFormat, SimpleDateFormat}
  3. import java.util.Date
  4. import io.finch._
  5. import com.twitter.finagle.Service
  6. import com.twitter.finagle.Http
  7. import com.twitter.finagle.stats.NullStatsReceiver
  8. import com.twitter.finagle.tracing.NullTracer
  9. import com.twitter.util.Await
  10. import io.circe._
  11. import io.circe.generic.auto._
  12. import io.circe.jawn._
  13. import io.circe.syntax._
  14. import io.circe.{Decoder, Encoder, Json}
  15. object WebServer extends App {
  16. private val dateFormat: DateFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z")
  17. import io.finch.circe._
  18. val json = get("json") {
  19. Ok(Json.obj("message" -> Json.string("Hello, World!")))
  20. .withHeader("Server" -> "finch")
  21. .withHeader("Date" -> dateFormat.format(new Date()))
  22. }
  23. val plaintext: Endpoint[String] = get("plaintext") {
  24. Ok("Hello, World!")
  25. .withHeader("Server" -> "finch")
  26. .withHeader("Date" -> dateFormat.format(new Date()))
  27. .withContentType(Some("text/plain"))
  28. }
  29. Await.ready(Http.server
  30. .withCompressionLevel(0)
  31. .withStatsReceiver(NullStatsReceiver)
  32. .withTracer(NullTracer)
  33. .serve(":9000", (json :+: plaintext).toService)
  34. )
  35. }