/* (C) 2025 Linnea Gräf - Licensed to everyone under the BSD 3 Clause License */ package moe.nea.prickly.server; import io.javalin.Javalin; import io.javalin.config.JavalinConfig; import lombok.extern.slf4j.Slf4j; import moe.nea.prickly.config.Config; @Slf4j public class Server { Javalin javalin; public Server() { log.info("creating server instance"); javalin = Javalin.create(this::configure); installRoutes(); } protected void installRoutes() { log.info("installing routes"); for (Config.Application application : Config.APPLICATIONS) { installApplication(application); } } protected void installApplication(Config.Application application) { log.debug("registering application {}", application); var prefix = "/app/" + application.SLUG; javalin.get(prefix + "/", ctx -> { ctx.redirect(application.HOMEPAGE); }); } protected void configure(JavalinConfig config) { log.info("configuring javalin"); } public void start() { var port = Config.PORT; var host = Config.HOST; log.info("starting on port http://{}:{}", host, port); javalin.start(host, port); } }