refactor: little clean

This commit is contained in:
2025-04-16 00:45:08 +02:00
parent f03265292a
commit 020c4630d7
2 changed files with 19 additions and 14 deletions

View File

@@ -1,22 +1,20 @@
package eventDemo.adapter.interfaceLayer.query package eventDemo.adapter.interfaceLayer.query
import eventDemo.business.command.GameCommandHandler import eventDemo.business.command.GameCommandHandler
import eventDemo.business.command.command.GameCommand
import eventDemo.business.entity.GameId import eventDemo.business.entity.GameId
import eventDemo.business.entity.Player
import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener import eventDemo.business.event.projection.projectionListener.PlayerNotificationListener
import eventDemo.business.notification.Notification import eventDemo.business.notification.Notification
import eventDemo.libs.fromFrameChannel import eventDemo.libs.fromFrameChannel
import eventDemo.libs.toObjectChannel import eventDemo.libs.toObjectChannel
import io.github.oshai.kotlinlogging.withLoggingContext import io.github.oshai.kotlinlogging.withLoggingContext
import io.ktor.server.application.ApplicationCall
import io.ktor.server.auth.authenticate 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.routing.Route
import io.ktor.server.websocket.DefaultWebSocketServerSession import io.ktor.server.websocket.DefaultWebSocketServerSession
import io.ktor.server.websocket.webSocket import io.ktor.server.websocket.webSocket
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.channels.SendChannel import kotlinx.coroutines.channels.SendChannel
import kotlinx.coroutines.channels.trySendBlocking import kotlinx.coroutines.channels.trySendBlocking
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -45,7 +43,8 @@ private fun DefaultWebSocketServerSession.runWebSocket(
commandHandler: GameCommandHandler, commandHandler: GameCommandHandler,
playerNotificationListener: PlayerNotificationListener, playerNotificationListener: PlayerNotificationListener,
) { ) {
val currentPlayer = call.getPlayer() val currentPlayer = call.getPlayerCredentials()
val incomingFrameChannel: ReceiveChannel<GameCommand> = toObjectChannel(incoming)
val outgoingFrameChannel: SendChannel<Notification> = fromFrameChannel(outgoing) val outgoingFrameChannel: SendChannel<Notification> = fromFrameChannel(outgoing)
withLoggingContext("currentPlayer" to currentPlayer.toString()) { withLoggingContext("currentPlayer" to currentPlayer.toString()) {
val notificationListener = val notificationListener =
@@ -59,18 +58,10 @@ private fun DefaultWebSocketServerSession.runWebSocket(
commandHandler.handleIncomingPlayerCommands( commandHandler.handleIncomingPlayerCommands(
currentPlayer, currentPlayer,
gameId, gameId,
toObjectChannel(incoming), incomingFrameChannel,
outgoingFrameChannel, outgoingFrameChannel,
) )
notificationListener.close() notificationListener.close()
} }
} }
} }
private fun ApplicationCall.getPlayer() =
principal<JWTPrincipal>()!!.run {
Player(
id = payload.getClaim("playerid").asString(),
name = payload.getClaim("username").asString(),
)
}

View File

@@ -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<JWTPrincipal>()!!.run {
Player(
id = payload.getClaim("playerid").asString(),
name = payload.getClaim("username").asString(),
)
}