Add JSON status endpoint

This commit is contained in:
Fabian Wolter
2026-06-09 17:23:31 +00:00
parent 241a6744ab
commit 3af85cc3e8
2 changed files with 35 additions and 0 deletions
+2
View File
@@ -17,6 +17,8 @@ kotlin {
dependencies { dependencies {
implementation("io.ktor:ktor-server-core-jvm:3.1.3") implementation("io.ktor:ktor-server-core-jvm:3.1.3")
implementation("io.ktor:ktor-server-netty-jvm:3.1.3") implementation("io.ktor:ktor-server-netty-jvm:3.1.3")
implementation("io.ktor:ktor-server-content-negotiation-jvm:3.1.3")
implementation("io.ktor:ktor-serialization-kotlinx-json-jvm:3.1.3")
implementation("ch.qos.logback:logback-classic:1.5.18") implementation("ch.qos.logback:logback-classic:1.5.18")
testImplementation(kotlin("test")) testImplementation(kotlin("test"))
@@ -2,11 +2,24 @@ package de.ruvnox.tactical
import io.ktor.http.ContentType import io.ktor.http.ContentType
import io.ktor.server.application.Application import io.ktor.server.application.Application
import io.ktor.server.application.install
import io.ktor.server.engine.embeddedServer import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty import io.ktor.server.netty.Netty
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
import io.ktor.server.response.respond
import io.ktor.server.response.respondText import io.ktor.server.response.respondText
import io.ktor.server.routing.get import io.ktor.server.routing.get
import io.ktor.server.routing.routing import io.ktor.server.routing.routing
import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class ServiceStatusResponse(
val service: String,
val status: String,
val version: String
)
fun main() { fun main() {
embeddedServer( embeddedServer(
@@ -18,6 +31,16 @@ fun main() {
} }
fun Application.module() { fun Application.module() {
install(ContentNegotiation) {
json(
Json {
prettyPrint = false
isLenient = false
ignoreUnknownKeys = false
}
)
}
routing { routing {
get("/") { get("/") {
call.respondText( call.respondText(
@@ -32,5 +55,15 @@ fun Application.module() {
contentType = ContentType.Text.Plain contentType = ContentType.Text.Plain
) )
} }
get("/api/v1/status") {
call.respond(
ServiceStatusResponse(
service = "ruvnox-tactical-server",
status = "online",
version = "0.1.0-SNAPSHOT"
)
)
}
} }
} }