When serving files with Ktor, there might be times when you need to alter those files. For example, you might want to inject a script in every served HTML file. For this purpose, we can leverage plugins. Plugins can hook at different stages of the request/response pipeline:
Ktor request/response pipeline Let’s write a plugin that transforms a specific type of files - going with the previous example of injecting a script to every served HTML file.
Posted on 6 September 2022
Serving static files with Ktor for a static website seems easy enough:
fun main() { embeddedServer(Netty, port = 8080) { routing { static { files("static-data") } } }.start(wait = true) } Done? Not quite. Opening http://localhost:8080 will only get you a 404, even if you have an index.html file in the static-data folder. You have to let Ktor know you want to opt-in serving a default file. Let’s try again (omitting anything outside the static block):
Posted on 3 September 2022
This post will describe how to compile a small application written in Kotlin using Bazel, tests, as well as how to use static analyzers.
Phosphorus Phosphorus is the application that this post will cover. It’s a small utility that I wrote to check if an image matches a reference. If it doesn’t, Phosphorus generates an image highlighting the differences. The goal is to be able to check that something generates an image in a given way, and doesn’t change - at least if it’s not expected.
Posted on 8 December 2019