🔀 Merge branch 'release/v82'
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / UploadImagePage.kt
index 32eec71..0021c6b 100644 (file)
@@ -1,44 +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.
  */
 @TemplatePath("/templates/invalid.html")
-class UploadImagePage @Inject constructor(template: Template, webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer):
-               LoggedInPage("uploadImage.html", template, "Page.UploadImage.Title", webInterface, loaders, templateRenderer) {
+@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
                        }
 
@@ -49,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}")
                }
        }
 
@@ -62,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
+                       }
                }
-       }
 
 }