refactor: little clean
This commit is contained in:
@@ -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(),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user