From 509c45b357619e00fd0c3d687826278651771a15 Mon Sep 17 00:00:00 2001 From: efim Date: Wed, 28 Jun 2023 07:18:00 +0000 Subject: [PATCH] feat(12): adding thymeleaf lib and template resp --- .../build.sbt | 3 +- .../resources/templates/basic-template.html | 1 + .../src/main/scala/example/Main.scala | 49 ++++++++++++++++++- 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 12-order-summary-component-thymeleaf/src/main/resources/templates/basic-template.html diff --git a/12-order-summary-component-thymeleaf/build.sbt b/12-order-summary-component-thymeleaf/build.sbt index 3b885b7..e78a171 100644 --- a/12-order-summary-component-thymeleaf/build.sbt +++ b/12-order-summary-component-thymeleaf/build.sbt @@ -15,6 +15,7 @@ lazy val root = (project in file(".")) libraryDependencies += (toolkitTest % Test), libraryDependencies ++= Seq( "com.lihaoyi" %% "cask" % "0.9.1", - "com.lihaoyi" %% "mainargs" % "0.5.0" + "com.lihaoyi" %% "mainargs" % "0.5.0", + "org.thymeleaf" % "thymeleaf" % "3.1.1.RELEASE" ) ) diff --git a/12-order-summary-component-thymeleaf/src/main/resources/templates/basic-template.html b/12-order-summary-component-thymeleaf/src/main/resources/templates/basic-template.html new file mode 100644 index 0000000..c1c6f90 --- /dev/null +++ b/12-order-summary-component-thymeleaf/src/main/resources/templates/basic-template.html @@ -0,0 +1 @@ +

Hello, Name!

diff --git a/12-order-summary-component-thymeleaf/src/main/scala/example/Main.scala b/12-order-summary-component-thymeleaf/src/main/scala/example/Main.scala index 3dd902e..5006fca 100644 --- a/12-order-summary-component-thymeleaf/src/main/scala/example/Main.scala +++ b/12-order-summary-component-thymeleaf/src/main/scala/example/Main.scala @@ -1,3 +1,6 @@ +//> using dep com.lihaoyi::cask:0.9.1 +//> using dep com.lihaoyi::mainargs:0.5.0 +//> using dep org.thymeleaf:thymeleaf:3.1.1.RELEASE package example import mainargs.{main, arg, ParserForMethods} @@ -12,9 +15,53 @@ object Main { portArg: Int = 8080, @arg(name = "host", doc = "Host on which server will start serving.") hostArg: String = "localhost" - ): Unit = + ): Unit = { println(s"Will start server on ${hostArg}:${portArg}") + val server = new cask.Main { + override val allRoutes = Seq(AppRoutes()) + override def port = portArg + override def host = hostArg + } + server.main(Array.empty) + + } def main(args: Array[String]): Unit = ParserForMethods(this).runOrExit(args) + case class AppRoutes()(implicit cc: castor.Context, log: cask.Logger) + extends cask.Routes { + @cask.get("/") + def index() = { + import org.thymeleaf.context.Context + import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver + import org.thymeleaf.TemplateEngine + + val templateResolver = new ClassLoaderTemplateResolver() + templateResolver.setPrefix("templates/"); + templateResolver.setSuffix(".html") + templateResolver.setTemplateMode("HTML5") + + val templateEngine = new TemplateEngine() + templateEngine.setTemplateResolver(templateResolver) + + val a = 11234 + val context = new Context() + context.setVariable("name", s"Johny $a") + + val result = templateEngine.process("basic-template", context) + + cask.Response( + result, + headers = Seq("Content-Type" -> "text/html;charset=UTF-8") + ) + } + + @cask.staticFiles("/dist") // this is what path gets matched + def distFiles() = "dist" + + @cask.staticFiles("/public") // this is what path gets matched + def publicFiles() = "public" + + initialize() + } }