X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FFreenetTemplatePage.kt;h=900ece9299c7cbb6386e0fbd879d17a31ccf7b09;hp=d93e7d19fe52d9c8b03f930f33d770a56f4d6f2a;hb=110a933c2724aba6a604fc5eed6372ff1e1e6144;hpb=09e10dd6e554ce4af6b35e0f56251c6c26bc018e diff --git a/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt b/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt index d93e7d1..900ece9 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/page/FreenetTemplatePage.kt @@ -21,7 +21,6 @@ import freenet.clients.http.* import net.pterodactylus.sone.main.* import net.pterodactylus.util.template.* import net.pterodactylus.util.web.* -import java.io.* import java.lang.String.* import java.net.* import java.util.logging.* @@ -33,9 +32,8 @@ import java.util.logging.Logger.* */ open class FreenetTemplatePage( private val path: String, - private val templateContextFactory: TemplateContextFactory, - private val loaders: Loaders, - private val template: Template, + private val templateRenderer: TemplateRenderer, + loaders: Loaders, private val invalidFormPasswordRedirectTarget: String ) : FreenetPage, LinkEnabledCallback { @@ -57,6 +55,8 @@ open class FreenetTemplatePage( override fun isEnabled(toadletContext: ToadletContext) = !isFullAccessOnly + private val template = templatePath?.let(loaders::loadTemplate) ?: Template() + override fun handleRequest(request: FreenetRequest, response: Response): Response { getRedirectTarget(request)?.let { redirectTarget -> return RedirectResponse(redirectTarget) } @@ -82,20 +82,19 @@ open class FreenetTemplatePage( } shortcutIcon?.let { pageNode.addForwardLink("icon", it) } - val templateContext = templateContextFactory.createTemplateContext() - templateContext.mergeContext(template.initialContext) - try { + val output = try { val start = System.nanoTime() - processTemplate(request, templateContext) - val finish = System.nanoTime() - logger.log(Level.FINEST, format("Template was rendered in %.2fms.", (finish - start) / 1000000.0)) + templateRenderer.render(template) { templateContext -> + processTemplate(request, templateContext) + }.also { + val finish = System.nanoTime() + logger.log(Level.FINEST, format("Template was rendered in %.2fms.", (finish - start) / 1000000.0)) + } } catch (re1: RedirectException) { return RedirectResponse(re1.target ?: "") } - val stringWriter = StringWriter() - template.render(templateContext, stringWriter) - pageNode.content.addChild("%", stringWriter.toString()) + pageNode.content.addChild("%", output) return response.setStatusCode(200).setStatusText("OK").setContentType("text/html").write(pageNode.outer.generate()) }