package net.pterodactylus.sone.web.pages
import freenet.support.api.Bucket
+import net.pterodactylus.sone.data.Sone
import net.pterodactylus.sone.text.TextFilter
import net.pterodactylus.sone.utils.emptyToNull
import net.pterodactylus.sone.utils.headers
import net.pterodactylus.sone.web.page.FreenetRequest
import net.pterodactylus.util.template.Template
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) {
+class UploadImagePage @Inject constructor(template: Template, webInterface: WebInterface):
+ LoggedInPage("uploadImage.html", template, "Page.UploadImage.Title", webInterface) {
- 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(freenetRequest: FreenetRequest, currentSone: Sone, templateContext: TemplateContext) {
+ if (freenetRequest.isPOST) {
+ val parentAlbum = freenetRequest.parameters["parent"]!!.let(webInterface.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 = freenetRequest.parameters["title", 200].emptyToNull ?: throw RedirectException("emptyImageTitle.html")
- val uploadedFile = request.httpRequest.getUploadedFile("image")
+ val uploadedFile = freenetRequest.httpRequest.getUploadedFile("image")
val bytes = uploadedFile.data.use { it.toByteArray() }
val bufferedImage = bytes.toImage()
if (bufferedImage == null) {
}
val temporaryImage = webInterface.core.createTemporaryImage(bytes.mimeType, bytes)
- webInterface.core.createImage(getCurrentSone(request.toadletContext), parentAlbum, temporaryImage).modify().apply {
+ webInterface.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(freenetRequest.headers["Host"], freenetRequest.parameters["description", 4000]))
}.update()
throw RedirectException("imageBrowser.html?album=${parentAlbum.id}")
}