1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.util.web.Page
4 import net.pterodactylus.util.web.Request
5 import net.pterodactylus.util.web.Response
7 import javax.inject.Inject
10 * [Page] implementation that delivers static files from the filesystem.
12 class ReloadingPage<R: Request> @Inject constructor(private val prefix: String, private val path: String, private val mimeType: String): Page<R> {
14 override fun isPrefixPage() = true
16 override fun getPath() = prefix
18 override fun handleRequest(request: R, response: Response): Response {
19 val filename = request.uri.path.split("/").last()
20 File(path, filename).also { file ->
22 response.content.use { output ->
23 file.forEachBlock { buffer, bytesRead ->
24 output.write(buffer, 0, bytesRead)
27 response.statusCode = 200
28 response.contentType = mimeType
30 response.statusCode = 404
31 response.statusText = "Not found"