Buzzer/src/main/kotlin/de/pheerai/buzzer/routing/setupRoutes.kt

53 lines
1.2 KiB
Kotlin

package de.pheerai.buzzer.routing
import de.pheerai.buzzer.clients.createGameModeratorDocument
import de.pheerai.buzzer.clients.createPlayerDocument
import de.pheerai.buzzer.handlers.handleGameModeratorSocket
import de.pheerai.buzzer.handlers.handlePlayerSocket
import io.ktor.server.application.*
import io.ktor.server.html.*
import io.ktor.server.http.content.*
import io.ktor.server.routing.*
import io.ktor.server.websocket.*
import org.slf4j.Logger
fun Application.configureRoutes() {
routing {
assetRoutes()
clientRoutes()
websocketRoutes(this@configureRoutes.log)
}
}
private fun Routing.websocketRoutes(log: Logger) {
webSocket("/socket/player") { handlePlayerSocket(log) }
webSocket("/socket/moderator") { handleGameModeratorSocket(log) }
}
private fun Routing.clientRoutes() {
get("/") {
call.respondHtml {
createPlayerDocument()
}
}
get("/client/player") {
call.respondHtml {
createPlayerDocument()
}
}
get("/client/moderator") {
call.respondHtml {
createGameModeratorDocument()
}
}
}
private fun Routing.assetRoutes() {
static("/assets") {
resources("css")
resources("js")
}
}