X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FReloadingPage.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FReloadingPage.kt;h=697d173cec0ef2846720dd42f78cb9b47597e0bf;hb=aa9f039132c8b5cd46e35b9775be7e2cda8abcdf;hp=0000000000000000000000000000000000000000;hpb=9f6688e2081bc08459bb1be128007ff7067e8c2c;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/web/pages/ReloadingPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/pages/ReloadingPage.kt new file mode 100644 index 0000000..697d173 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/pages/ReloadingPage.kt @@ -0,0 +1,36 @@ +package net.pterodactylus.sone.web.pages + +import net.pterodactylus.util.web.Page +import net.pterodactylus.util.web.Request +import net.pterodactylus.util.web.Response +import java.io.File + +/** + * [Page] implementation that delivers static files from the filesystem. + */ +class ReloadingPage(private val prefix: String, private val path: String, private val mimeType: String): Page { + + override fun isPrefixPage() = true + + override fun getPath() = prefix + + override fun handleRequest(request: R, response: Response): Response { + val filename = request.uri.path.split("/").last() + File(path, filename).also { file -> + if (file.exists()) { + response.content.use { output -> + file.forEachBlock { buffer, bytesRead -> + output.write(buffer, 0, bytesRead) + } + } + response.statusCode = 200 + response.contentType = mimeType + } else { + response.statusCode = 404 + response.statusText = "Not found" + } + } + return response + } + +}