diff --git a/Core/src/org/tbasket/Main.scala b/Core/src/org/tbasket/Main.scala index ed91a63..214000b 100644 --- a/Core/src/org/tbasket/Main.scala +++ b/Core/src/org/tbasket/Main.scala @@ -4,7 +4,6 @@ import org.apache.logging.log4j.LogManager import org.tbasket.auth.Authenticator import org.tbasket.config.{FileServerConfig, ServerConfig} import org.tbasket.data.Database -import org.tbasket.dispatch.StaticWebServicImpl import org.tbasket.endpoint.Endpoint import pdi.jwt.algorithms.JwtAsymmetricAlgorithm import zio.* @@ -25,18 +24,13 @@ object Main extends ZIOAppDefault: override def run = ZIO.serviceWithZIO[ZIOAppArgs] { args => retrieveConfig(args) - .flatMap(config => setupAuth(config) <&> setupDatabase(config) <&> setupEndpoint(config) <&> setupStaticWebService(config)) + .flatMap(config => setupAuth(config) <&> setupDatabase(config) <&> setupEndpoint(config)) .flatMap { - case (auth, db, ep, disp) => - ep.run.provide(db.datasourceLayer, db.contextLayer, auth, disp) + case (auth, db, ep) => + ep.run.provide(db.datasourceLayer, db.contextLayer, auth) } } - private def setupStaticWebService(config: ServerConfig) = ZIO.attempt { - val dispatcher = new StaticWebServicImpl(config.pagesLocation.get) - ZLayer.succeed(dispatcher) - } - private def setupEndpoint(config: ServerConfig) = ZIO.attempt { new Endpoint(config.endpointPort) } diff --git a/Core/src/org/tbasket/dispatch/StaticWebService.scala b/Core/src/org/tbasket/dispatch/StaticWebService.scala deleted file mode 100644 index 7ac2055..0000000 --- a/Core/src/org/tbasket/dispatch/StaticWebService.scala +++ /dev/null @@ -1,8 +0,0 @@ -package org.tbasket.dispatch - -import zio.* -import zio.http.{Request, Response} - -trait StaticWebService { - def get(r: Request): IO[Object, Response] -} diff --git a/Core/src/org/tbasket/dispatch/StaticWebServiceImpl.scala b/Core/src/org/tbasket/dispatch/StaticWebServiceImpl.scala deleted file mode 100644 index 55e9717..0000000 --- a/Core/src/org/tbasket/dispatch/StaticWebServiceImpl.scala +++ /dev/null @@ -1,57 +0,0 @@ -package org.tbasket.dispatch - -import zio.* -import zio.http.* -import zio.http.model.Status -import zio.http.model.Status.* -import zio.stream.ZStream - -import java.nio.file.{Files, Path} -import scala.collection.mutable - -class StaticWebServicImpl(pagesLocation: Path) extends StaticWebService { - - private val resources = resolveResources - - override def get(r: Request) = - ZIO.attempt(pagesLocation.toString + r.url.path.toString) - .filterOrFail(!_.startsWith("/"))(Forbidden) - .map(resources.get) - .someOrFail(NotFound) - .map(content => Response(status = Ok, body = content)) - .catchSome { - case status: Status => - ZIO.attempt(Response.status(status)) - } - - - private def resolveResources: Map[String, Body] = { - - val map = mutable.HashMap.empty[String, Body] - - def resolveAll(loc: Path): Unit = { - Files.list(loc) - .forEach { - case d if Files.isDirectory(d) => resolveAll(d) - case f => - val body = Body.fromFile(f.toFile) - val fullPath = f.toString - val fileName = f.getFileName.toString - val purename = fileName.take(fileName.indexOf('.')) - - map.put(fullPath, body) - - //also bind the dir path with the index body - if (purename == "index" || purename == f.getParent.getFileName.toString) { - val extension = fullPath.drop(fullPath.indexOf('.')) - val dirPath = f.getParent.toString - if (extension == ".html") - map.put(dirPath, body) - else map.put(dirPath + extension, body) - } - } - } - resolveAll(pagesLocation) - map.toMap - } -} diff --git a/Core/src/org/tbasket/endpoint/Endpoint.scala b/Core/src/org/tbasket/endpoint/Endpoint.scala index 595175d..3ada137 100644 --- a/Core/src/org/tbasket/endpoint/Endpoint.scala +++ b/Core/src/org/tbasket/endpoint/Endpoint.scala @@ -8,7 +8,6 @@ import io.netty.handler.codec.http.HttpMethod import org.apache.logging.log4j.{LogManager, Logger} import org.tbasket.auth.Authenticator import org.tbasket.data.DatabaseContext -import org.tbasket.dispatch.StaticWebService import org.tbasket.endpoint.Endpoint.{Log, app} import org.tbasket.error.* import EndpointUtils.errorBody @@ -37,7 +36,7 @@ class Endpoint(port: Int): Server.install(app).flatMap { port => Log.info(s"Listening API entries on $port") ZIO.never - }.provideSome[DatabaseContext & Authenticator & DataSource & StaticWebService]( + }.provideSome[DatabaseContext & Authenticator & DataSource]( Scope.default, serverConfigLayer, ConnectionPool.fixed(4), @@ -53,16 +52,9 @@ object Endpoint: case r@POST -> _ / "auth" / "login" => LoginHandler.login(r) - case r@POST -> _ / "auth" / "token-login" => - TokenLoginHandler.login(r) - case r@POST -> _ / "auth" / "register" => RegisterHandler.register(r) - case r@GET -> _ => - - ZIO.serviceWithZIO[StaticWebService](_.get(r)) - case r@method -> path => val ipInsights = r.remoteAddress .map(ip => s": request received from $ip.") diff --git a/tests/src/org/tbasket/test/TestLayers.scala b/tests/src/org/tbasket/test/TestLayers.scala index 1d35bdd..bffe1e0 100644 --- a/tests/src/org/tbasket/test/TestLayers.scala +++ b/tests/src/org/tbasket/test/TestLayers.scala @@ -21,8 +21,6 @@ object TestLayers { ZLayer.succeed(auth) } - val resp = ZLayer.succeed(TestStaticWebService) - val db = { //ensure that the test table is always new in order to make tests on the same dataset all the time. Files.deleteIfExists(Path.of("/tmp/test-database.sqlite")) diff --git a/tests/src/org/tbasket/test/TestStaticWebService.scala b/tests/src/org/tbasket/test/TestStaticWebService.scala deleted file mode 100644 index 8d07b33..0000000 --- a/tests/src/org/tbasket/test/TestStaticWebService.scala +++ /dev/null @@ -1,10 +0,0 @@ -package org.tbasket.test - -import org.tbasket.dispatch.StaticWebService -import zio.ZIO -import zio.http.model.Status.NotFound -import zio.http.{Http, Request, Response} - -object TestStaticWebService extends StaticWebService { - override def get(r: Request) = ZIO.attempt(Response.status(NotFound)) -} diff --git a/tests/src/org/tbasket/test/endpoint/TBasketPageSpec.scala b/tests/src/org/tbasket/test/endpoint/TBasketPageSpec.scala index fa1ba07..9be0af2 100644 --- a/tests/src/org/tbasket/test/endpoint/TBasketPageSpec.scala +++ b/tests/src/org/tbasket/test/endpoint/TBasketPageSpec.scala @@ -5,7 +5,6 @@ import io.getquill.context.qzio.ZioJdbcContext import io.getquill.context.sql.idiom.SqlIdiom import org.tbasket.auth.Authenticator import org.tbasket.data.DatabaseContext -import org.tbasket.dispatch.StaticWebService import org.tbasket.endpoint.auth.LoginHandler.login import org.tbasket.test.TestLayers.* import zio.* @@ -23,14 +22,13 @@ abstract class TBasketPageSpec(location: String) extends ZIOSpecDefault { protected def tspec: Spec[ DataSource & ClientConfig & Authenticator & ConnectionPool & - Scope & DatabaseContext & Client & StaticWebService, Any + Scope & DatabaseContext & Client, Any ] final override def spec = tspec.provide( db.datasourceLayer, db.contextLayer, auth, - resp, ConnectionPool.fixed(1), Scope.default, ClientConfig.default, diff --git a/tests/src/org/tbasket/test/endpoint/auth/LoginHandlerTests.scala b/tests/src/org/tbasket/test/endpoint/auth/LoginHandlerTests.scala index 7304951..1f1e8d1 100644 --- a/tests/src/org/tbasket/test/endpoint/auth/LoginHandlerTests.scala +++ b/tests/src/org/tbasket/test/endpoint/auth/LoginHandlerTests.scala @@ -21,7 +21,7 @@ import zio.json.ast.{Json, JsonCursor} import zio.test.* import zio.test.Assertion.* -object LoginHandlerTests extends TBasketPageSpec("/login") { +object LoginHandlerTests extends TBasketPageSpec("/auth/login") { private def requestsSpec = suite("bad request tests")( diff --git a/tests/src/org/tbasket/test/endpoint/auth/RegisterHandlerTests.scala b/tests/src/org/tbasket/test/endpoint/auth/RegisterHandlerTests.scala index 8ca7a36..f0d46e8 100644 --- a/tests/src/org/tbasket/test/endpoint/auth/RegisterHandlerTests.scala +++ b/tests/src/org/tbasket/test/endpoint/auth/RegisterHandlerTests.scala @@ -12,7 +12,7 @@ import zio.json.ast.JsonCursor import zio.test.* import zio.test.Assertion.* -object RegisterHandlerTests extends TBasketPageSpec("/register") { +object RegisterHandlerTests extends TBasketPageSpec("/auth/register") { private def requestsSpec = suite("bad request tests")(