now using ZIO-http, currently trying to familiarize with this new library

production
Override-6 2 years ago
parent 04924ee757
commit 798fbe9347

@ -19,10 +19,7 @@ class Endpoint(hostname: String, port: Int, rootPath: Option[String]) extends ZI
private val app = Http.collectZIO[Request] { private val app = Http.collectZIO[Request] {
case r@_ -> Root / path if handlers.contains(path) => case r@_ -> Root / path if handlers.contains(path) =>
for { handlers(path).handle.provideEnvironment(ZEnvironment(r))
handler <- handlers.get(path)
_ <- handler.handle
} yield ()
case _ -> path => case _ -> path =>
ZIO.fail(new APIException(s"Unable to find a handler for page '$path'")) ZIO.fail(new APIException(s"Unable to find a handler for page '$path'"))
} }

@ -5,16 +5,19 @@ import org.tbasket.api.compute.APIRequestHandler
import zio.ZIO import zio.ZIO
import zio.http.model.Method._ import zio.http.model.Method._
import zio.http.{Request, Response} import zio.http.{Request, Response}
object IncrementHandler extends APIRequestHandler { object IncrementHandler extends APIRequestHandler {
private var i = 0 private var i = 0
override def handle: ZIO[Request, APIException, Response] = { override def handle: ZIO[Request, APIException, Response] = {r: Request =>
case GET -> _ => Response.json(s"value: $i") r match {
case POST -> _ => case Request(_, _, GET, _, _, _) =>
i += 1 ZIO.succeed(Response.json(s"value: $i"))
Response.ok case Request(_, _, POST, _, _, _) =>
i += 1
ZIO.succeed(Response.ok)
Console
}
} }
} }