Replace get image page with Kotlin version
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / GetImagePage.kt
diff --git a/src/main/kotlin/net/pterodactylus/sone/web/pages/GetImagePage.kt b/src/main/kotlin/net/pterodactylus/sone/web/pages/GetImagePage.kt
new file mode 100644 (file)
index 0000000..3e9eed0
--- /dev/null
@@ -0,0 +1,42 @@
+package net.pterodactylus.sone.web.pages
+
+import net.pterodactylus.sone.web.WebInterface
+import net.pterodactylus.sone.web.page.FreenetPage
+import net.pterodactylus.sone.web.page.FreenetRequest
+import net.pterodactylus.util.web.Response
+import java.net.URI
+
+/**
+ * Page that delivers a {@link TemporaryImage} to the browser.
+ */
+class GetImagePage(webInterface: WebInterface): FreenetPage {
+
+       private val core = webInterface.core!!
+
+       override fun getPath(): String {
+               return "getImage.html"
+       }
+
+       override fun isPrefixPage(): Boolean {
+               return false
+       }
+
+       override fun handleRequest(request: FreenetRequest, response: Response): Response {
+               val image = core.getTemporaryImage(request.httpRequest.getParam("image")) ?: return response.apply {
+                       statusCode = 404
+                       statusText = "Not found."
+                       contentType = "text/html; charset=utf-8"
+               }
+               return response.apply {
+                       statusCode = 200
+                       contentType = image.mimeType
+                       content.write(image.imageData)
+                       addHeader("Content-Disposition", "attachment; filename=${image.id}.${image.mimeType.split('/')[1]}")
+               }
+       }
+
+       override fun isLinkExcepted(link: URI?): Boolean {
+               return false
+       }
+
+}