* Page implementation that lets the user upload an image.
*/
@TemplatePath("/templates/invalid.html")
-class UploadImagePage @Inject constructor(webInterface: WebInterface, loaders: Loaders, templateRenderer: TemplateRenderer):
- LoggedInPage("uploadImage.html", "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
}
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}")
}
}
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
+ }
}
- }
}