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=0021c6bc8d44fa338c90e4d9d5dc7d45d296b29e;hp=0a31e4f8edf13f3b1e6702fb089cc98f81f47887;hb=HEAD;hpb=e3da46d8947ab8a542a156069b3b24c13fd011df 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 0a31e4f..0021c6b 100644 --- a/src/main/kotlin/net/pterodactylus/sone/web/pages/UploadImagePage.kt +++ b/src/main/kotlin/net/pterodactylus/sone/web/pages/UploadImagePage.kt @@ -1,43 +1,39 @@ package net.pterodactylus.sone.web.pages -import freenet.support.api.Bucket -import net.pterodactylus.sone.data.Sone +import freenet.support.api.* +import net.pterodactylus.sone.data.* import net.pterodactylus.sone.main.* -import net.pterodactylus.sone.text.TextFilter -import net.pterodactylus.sone.utils.emptyToNull -import net.pterodactylus.sone.utils.headers -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.text.* +import net.pterodactylus.sone.utils.* +import net.pterodactylus.sone.web.* import net.pterodactylus.sone.web.page.* -import net.pterodactylus.util.template.Template -import net.pterodactylus.util.template.TemplateContext -import java.awt.image.BufferedImage -import java.io.ByteArrayInputStream -import java.io.ByteArrayOutputStream -import javax.imageio.ImageIO -import javax.inject.Inject +import net.pterodactylus.util.template.* +import java.awt.image.* +import java.io.* +import javax.imageio.* +import javax.inject.* /** * Page implementation that lets the user upload an image. */ -class UploadImagePage @Inject constructor(template: Template, webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer): - LoggedInPage("uploadImage.html", template, "Page.UploadImage.Title", webInterface, loaders, templateRenderer) { +@TemplatePath("/templates/invalid.html") +@ToadletPath("uploadImage.html") +class UploadImagePage @Inject constructor(webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer) : + LoggedInPage("Page.UploadImage.Title", webInterface, loaders, templateRenderer) { 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") + val parentAlbum = soneRequest.parameters["parent"]!!.let(soneRequest.core::getAlbum) ?: redirectTo("noPermission.html") if (parentAlbum.sone != currentSone) { - throw RedirectException("noPermission.html") + redirectTo("noPermission.html") } - val title = soneRequest.parameters["title", 200].emptyToNull ?: throw RedirectException("emptyImageTitle.html") + val title = soneRequest.parameters["title", 200].emptyToNull ?: redirectTo("emptyImageTitle.html") val uploadedFile = soneRequest.httpRequest.getUploadedFile("image") val bytes = uploadedFile.data.use { it.toByteArray() } val bufferedImage = bytes.toImage() if (bufferedImage == null) { - templateContext["messages"] = soneRequest.l10n.getString("Page.UploadImage.Error.InvalidImage") + templateContext["messages"] = translation.translate("Page.UploadImage.Error.InvalidImage") return } @@ -48,7 +44,7 @@ class UploadImagePage @Inject constructor(template: Template, webInterface: WebI setTitle(title) setDescription(TextFilter.filter(soneRequest.headers["Host"], soneRequest.parameters["description", 4000])) }.update() - throw RedirectException("imageBrowser.html?album=${parentAlbum.id}") + redirectTo("imageBrowser.html?album=${parentAlbum.id}") } } @@ -61,13 +57,14 @@ class UploadImagePage @Inject constructor(template: Template, webInterface: WebI ImageIO.read(it) } - private val ByteArray.mimeType get() = ByteArrayInputStream(this).use { - ImageIO.createImageInputStream(it).use { - ImageIO.getImageReaders(it).asSequence() - .firstOrNull()?.originatingProvider?.mimeTypes?.firstOrNull() - ?: UNKNOWN_MIME_TYPE + private val ByteArray.mimeType + get() = ByteArrayInputStream(this).use { + ImageIO.createImageInputStream(it).use { + ImageIO.getImageReaders(it).asSequence() + .firstOrNull()?.originatingProvider?.mimeTypes?.firstOrNull() + ?: UNKNOWN_MIME_TYPE + } } - } }