8778a6130e82cea8d508a9e583eef969be349a86
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / GetImagePage.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.web.WebInterface
4 import net.pterodactylus.sone.web.page.FreenetPage
5 import net.pterodactylus.sone.web.page.FreenetRequest
6 import net.pterodactylus.util.web.Response
7 import java.net.URI
8 import javax.inject.Inject
9
10 /**
11  * Page that delivers a {@link TemporaryImage} to the browser.
12  */
13 class GetImagePage @Inject constructor(webInterface: WebInterface): FreenetPage {
14
15         private val core = webInterface.core
16
17         override fun getPath(): String {
18                 return "getImage.html"
19         }
20
21         override fun isPrefixPage(): Boolean {
22                 return false
23         }
24
25         override fun handleRequest(request: FreenetRequest, response: Response): Response {
26                 val image = core.getTemporaryImage(request.httpRequest.getParam("image")) ?: return response.apply {
27                         statusCode = 404
28                         statusText = "Not found."
29                         contentType = "text/html; charset=utf-8"
30                 }
31                 return response.apply {
32                         statusCode = 200
33                         contentType = image.mimeType
34                         content.write(image.imageData)
35                         addHeader("Content-Disposition", "attachment; filename=${image.id}.${image.mimeType.split('/')[1]}")
36                 }
37         }
38
39         override fun isLinkExcepted(link: URI): Boolean {
40                 return false
41         }
42
43 }