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 f8f419ba9..4f13e0df3 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(