X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FUploadImagePage.kt;h=86f2875b7567ecde6e5b872e1f4f0955f67b6508;hp=774a17940f4bf8e34f10695cbaab42c2f2c28e4a;hb=110a933c2724aba6a604fc5eed6372ff1e1e6144;hpb=51ab1ab2da27d02a884295cea31c4f6d30b5211b diff --git a/src/main/kotlin/net/pterodactylus/sone/web/pages/UploadImagePage.kt b/src/main/kotlin/net/pterodactylus/sone/web/pages/UploadImagePage.kt index 774a179..86f2875 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/pages/UploadImagePage.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/pages/UploadImagePage.kt @@ -1,6 +1,8 @@ package net.pterodactylus.sone.web.pages import freenet.support.api.Bucket +import net.pterodactylus.sone.data.Sone +import net.pterodactylus.sone.main.* import net.pterodactylus.sone.text.TextFilter import net.pterodactylus.sone.utils.emptyToNull import net.pterodactylus.sone.utils.headers @@ -8,43 +10,43 @@ import net.pterodactylus.sone.utils.isPOST import net.pterodactylus.sone.utils.parameters import net.pterodactylus.sone.utils.use import net.pterodactylus.sone.web.WebInterface -import net.pterodactylus.sone.web.page.FreenetRequest -import net.pterodactylus.util.template.Template +import net.pterodactylus.sone.web.page.* import net.pterodactylus.util.template.TemplateContext -import org.bouncycastle.asn1.x500.style.RFC4519Style.title import java.awt.image.BufferedImage import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream import javax.imageio.ImageIO +import javax.inject.Inject /** * Page implementation that lets the user upload an image. */ -class UploadImagePage(template: Template, webInterface: WebInterface): - SoneTemplatePage("uploadImage.html", template, "Page.UploadImage.Title", webInterface, true) { +@TemplatePath("/templates/invalid.html") +class UploadImagePage @Inject constructor(webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer): + LoggedInPage("uploadImage.html", "Page.UploadImage.Title", webInterface, loaders, templateRenderer) { - override fun handleRequest(request: FreenetRequest, templateContext: TemplateContext) { - if (request.isPOST) { - val parentAlbum = request.parameters["parent"]!!.let(webInterface.core::getAlbum) ?: throw RedirectException("noPermission.html") - if (parentAlbum.sone != getCurrentSone(request.toadletContext)) { + override fun handleRequest(soneRequest: SoneRequest, currentSone: Sone, templateContext: TemplateContext) { + if (soneRequest.isPOST) { + val parentAlbum = soneRequest.parameters["parent"]!!.let(soneRequest.core::getAlbum) ?: throw RedirectException("noPermission.html") + if (parentAlbum.sone != currentSone) { throw RedirectException("noPermission.html") } - val title = request.parameters["title", 200].emptyToNull ?: throw RedirectException("emptyImageTitle.html") + val title = soneRequest.parameters["title", 200].emptyToNull ?: throw RedirectException("emptyImageTitle.html") - val uploadedFile = request.httpRequest.getUploadedFile("image") + val uploadedFile = soneRequest.httpRequest.getUploadedFile("image") val bytes = uploadedFile.data.use { it.toByteArray() } val bufferedImage = bytes.toImage() if (bufferedImage == null) { - templateContext["messages"] = webInterface.l10n.getString("Page.UploadImage.Error.InvalidImage") + templateContext["messages"] = soneRequest.l10n.getString("Page.UploadImage.Error.InvalidImage") return } - val temporaryImage = webInterface.core.createTemporaryImage(bytes.mimeType, bytes) - webInterface.core.createImage(getCurrentSone(request.toadletContext), parentAlbum, temporaryImage).modify().apply { + val temporaryImage = soneRequest.core.createTemporaryImage(bytes.mimeType, bytes) + soneRequest.core.createImage(currentSone, parentAlbum, temporaryImage).modify().apply { setWidth(bufferedImage.width) setHeight(bufferedImage.height) setTitle(title) - setDescription(TextFilter.filter(request.headers["Host"], request.parameters["description", 4000])) + setDescription(TextFilter.filter(soneRequest.headers["Host"], soneRequest.parameters["description", 4000])) }.update() throw RedirectException("imageBrowser.html?album=${parentAlbum.id}") }