From 50cd0c4e108256d88760a073e45f095ca32a0303 Mon Sep 17 00:00:00 2001 From: Mitchell Syer Date: Tue, 7 Nov 2023 18:11:38 -0500 Subject: [PATCH] Fix Queries Containing % (#766) --- .../graphql/server/JavalinGraphQLRequestParser.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt index f8f419ba..4f13e0df 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt @@ -20,9 +20,17 @@ class JavalinGraphQLRequestParser : GraphQLRequestParser { @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE", "UNCHECKED_CAST") override suspend fun parseRequest(context: Context): GraphQLServerRequest? { return try { + val contentType = context.contentType() val formParam = - context.formParam("operations") - ?: return context.bodyAsClass(GraphQLServerRequest::class.java) + if ( + contentType?.contains("application/x-www-form-urlencoded") == true || + contentType?.contains("multipart/form-data") == true + ) { + context.formParam("operations") + ?: throw IllegalArgumentException("Cannot find 'operations' body") + } else { + return context.bodyAsClass(GraphQLServerRequest::class.java) + } val request = context.jsonMapper().fromJsonString(