From 020c4630d7fde6d8953ae4ea29f97519432501aa Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Wed, 16 Apr 2025 00:45:08 +0200 Subject: [PATCH] refactor: little clean --- .../query/GameCommandRouteWebSocket.kt | 19 +++++-------------- .../query/GetPlayerCredentials.kt | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GetPlayerCredentials.kt diff --git a/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GameCommandRouteWebSocket.kt b/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GameCommandRouteWebSocket.kt index b1aa063..780d665 100644 --- a/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GameCommandRouteWebSocket.kt +++ b/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GameCommandRouteWebSocket.kt @@ -1,22 +1,20 @@ package eventDemo.adapter.interfaceLayer.query import eventDemo.business.command.GameCommandHandler +import eventDemo.business.command.command.GameCommand import eventDemo.business.entity.GameId -import eventDemo.business.entity.Player import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener import eventDemo.business.notification.Notification import eventDemo.libs.fromFrameChannel import eventDemo.libs.toObjectChannel import io.github.oshai.kotlinlogging.withLoggingContext -import io.ktor.server.application.ApplicationCall import io.ktor.server.auth.authenticate -import io.ktor.server.auth.jwt.JWTPrincipal -import io.ktor.server.auth.principal import io.ktor.server.routing.Route import io.ktor.server.websocket.DefaultWebSocketServerSession import io.ktor.server.websocket.webSocket import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.channels.ReceiveChannel import kotlinx.coroutines.channels.SendChannel import kotlinx.coroutines.channels.trySendBlocking import kotlinx.coroutines.launch @@ -45,7 +43,8 @@ private fun DefaultWebSocketServerSession.runWebSocket( commandHandler: GameCommandHandler, playerNotificationListener: PlayerNotificationListener, ) { - val currentPlayer = call.getPlayer() + val currentPlayer = call.getPlayerCredentials() + val incomingFrameChannel: ReceiveChannel = toObjectChannel(incoming) val outgoingFrameChannel: SendChannel = fromFrameChannel(outgoing) withLoggingContext("currentPlayer" to currentPlayer.toString()) { val notificationListener = @@ -59,18 +58,10 @@ private fun DefaultWebSocketServerSession.runWebSocket( commandHandler.handleIncomingPlayerCommands( currentPlayer, gameId, - toObjectChannel(incoming), + incomingFrameChannel, outgoingFrameChannel, ) notificationListener.close() } } } - -private fun ApplicationCall.getPlayer() = - principal()!!.run { - Player( - id = payload.getClaim("playerid").asString(), - name = payload.getClaim("username").asString(), - ) - } diff --git a/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GetPlayerCredentials.kt b/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GetPlayerCredentials.kt new file mode 100644 index 0000000..e3b9141 --- /dev/null +++ b/src/main/kotlin/eventDemo/adapter/interfaceLayer/query/GetPlayerCredentials.kt @@ -0,0 +1,14 @@ +package eventDemo.adapter.interfaceLayer.query + +import eventDemo.business.entity.Player +import io.ktor.server.application.ApplicationCall +import io.ktor.server.auth.jwt.JWTPrincipal +import io.ktor.server.auth.principal + +internal fun ApplicationCall.getPlayerCredentials() = + principal()!!.run { + Player( + id = payload.getClaim("playerid").asString(), + name = payload.getClaim("username").asString(), + ) + }