mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-03 19:04:39 -05:00
Fix/graphql subscriptions logging (#704)
* Only log operationMessage in case gql logging is enabled * Always log message type and operation name
This commit is contained in:
@@ -35,6 +35,7 @@ import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMess
|
|||||||
import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMessage.ServerMessages.GQL_ERROR
|
import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMessage.ServerMessages.GQL_ERROR
|
||||||
import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMessage.ServerMessages.GQL_NEXT
|
import suwayomi.tachidesk.graphql.server.subscriptions.SubscriptionOperationMessage.ServerMessages.GQL_NEXT
|
||||||
import suwayomi.tachidesk.graphql.server.toGraphQLContext
|
import suwayomi.tachidesk.graphql.server.toGraphQLContext
|
||||||
|
import suwayomi.tachidesk.server.serverConfig
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the `graphql-ws` protocol defined by Apollo
|
* Implementation of the `graphql-ws` protocol defined by Apollo
|
||||||
@@ -52,9 +53,30 @@ class ApolloSubscriptionProtocolHandler(
|
|||||||
private val basicConnectionErrorMessage = SubscriptionOperationMessage(type = GQL_ERROR.type)
|
private val basicConnectionErrorMessage = SubscriptionOperationMessage(type = GQL_ERROR.type)
|
||||||
private val acknowledgeMessage = SubscriptionOperationMessage(GQL_CONNECTION_ACK.type)
|
private val acknowledgeMessage = SubscriptionOperationMessage(GQL_CONNECTION_ACK.type)
|
||||||
|
|
||||||
|
private fun getOperationName(payload: Any?): String {
|
||||||
|
val unknownOperationName = "__UNKNOWN__"
|
||||||
|
|
||||||
|
try {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
return (payload as Map<String, String>)["operationName"] ?: unknownOperationName
|
||||||
|
} catch (e: Exception) {
|
||||||
|
return unknownOperationName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun handleMessage(context: WsMessageContext): Flow<SubscriptionOperationMessage> {
|
fun handleMessage(context: WsMessageContext): Flow<SubscriptionOperationMessage> {
|
||||||
val operationMessage = convertToMessageOrNull(context.message()) ?: return flowOf(basicConnectionErrorMessage)
|
val operationMessage = convertToMessageOrNull(context.message()) ?: return flowOf(basicConnectionErrorMessage)
|
||||||
logger.debug { "GraphQL subscription client message, sessionId=${context.sessionId} operationMessage=$operationMessage" }
|
logger.debug {
|
||||||
|
"GraphQL subscription client message, sessionId=${context.sessionId} type=${operationMessage.type} operationName=${
|
||||||
|
getOperationName(operationMessage.payload)
|
||||||
|
} ${
|
||||||
|
if (serverConfig.gqlDebugLogsEnabled.value) {
|
||||||
|
"operationMessage=$operationMessage"
|
||||||
|
} else {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
}
|
||||||
|
|
||||||
return try {
|
return try {
|
||||||
when (operationMessage.type) {
|
when (operationMessage.type) {
|
||||||
|
|||||||
Reference in New Issue
Block a user