55 lines
1.4 KiB
Scala
55 lines
1.4 KiB
Scala
package example
|
|
|
|
import cask.model.Response
|
|
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver
|
|
import org.thymeleaf.TemplateEngine
|
|
import org.thymeleaf.context.Context
|
|
import org.thymeleaf.templatemode.TemplateMode
|
|
import scala.collection.JavaConverters._
|
|
|
|
case class Routes(countries: List[Country])(implicit
|
|
cc: castor.Context,
|
|
log: cask.Logger
|
|
) extends cask.Routes {
|
|
|
|
def buildTemplateEngine(): TemplateEngine = {
|
|
val templateResolver = new ClassLoaderTemplateResolver()
|
|
templateResolver.setTemplateMode(TemplateMode.HTML)
|
|
templateResolver.setPrefix("/templates/")
|
|
templateResolver.setSuffix(".html")
|
|
templateResolver.setCacheTTLMs(3600000L);
|
|
|
|
val templateEngine = new TemplateEngine()
|
|
templateEngine.setTemplateResolver(templateResolver)
|
|
|
|
templateEngine
|
|
}
|
|
val engine: TemplateEngine = buildTemplateEngine()
|
|
|
|
@cask.get("/")
|
|
def hello() = {
|
|
val context = new Context()
|
|
|
|
val regions = countries.map(_.region).distinct.sorted.asJava
|
|
context.setVariable("regionsSet", regions)
|
|
println(s"> got $regions")
|
|
|
|
val indexPage = engine.process("index", context)
|
|
Response(
|
|
indexPage,
|
|
headers = Seq("Content-Type" -> "text/html; charset=utf-8")
|
|
)
|
|
}
|
|
|
|
@cask.post("/do-thing")
|
|
def doThing(request: cask.Request) = {
|
|
request.text().reverse
|
|
}
|
|
|
|
@cask.staticResources("public")
|
|
def giveStaticResources() = "public"
|
|
|
|
initialize()
|
|
|
|
}
|