commonMain.com.apollographql.apollo3.api.Operations.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of apollo-api-jvm Show documentation
Show all versions of apollo-api-jvm Show documentation
Apollo GraphQL API classes
@file:JvmName("Operations")
package com.apollographql.apollo3.api
import com.apollographql.apollo3.annotations.ApolloExperimental
import com.apollographql.apollo3.api.internal.ResponseParser
import com.apollographql.apollo3.api.json.JsonReader
import com.apollographql.apollo3.api.json.JsonWriter
import com.apollographql.apollo3.api.json.jsonReader
import com.apollographql.apollo3.api.json.writeObject
import okio.Buffer
import okio.use
import kotlin.jvm.JvmName
import kotlin.jvm.JvmOverloads
/**
* Reads a GraphQL Json response like below to a [ApolloResponse]
* ```
* {
* "data": ...
* "errors": ...
* "extensions": ...
* }
* ```
*/
@JvmOverloads
fun Operation.composeJsonRequest(
jsonWriter: JsonWriter,
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
) {
jsonWriter.writeObject {
name("operationName")
value(name())
name("variables")
writeObject {
serializeVariables(this, customScalarAdapters)
}
name("query")
value(document())
}
}
/**
* Reads a GraphQL Json response like below to a [ApolloResponse]
* ```
* {
* "data": ...
* "errors": ...
* "extensions": ...
* }
* ```
*
* This method takes ownership of [jsonReader] and will always close it
*/
@JvmOverloads
fun Operation.parseJsonResponse(
jsonReader: JsonReader,
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
): ApolloResponse {
val variables = variables(customScalarAdapters, withDefaultBooleanValues = true)
return ResponseParser.parse(
jsonReader,
this,
customScalarAdapters.newBuilder()
.adapterContext(customScalarAdapters.adapterContext.newBuilder()
.variables(variables)
.build())
.build()
)
}
@JvmOverloads
@ApolloExperimental
fun Operation.parseJsonResponse(
json: String,
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
): ApolloResponse {
return parseJsonResponse(Buffer().writeUtf8(json).jsonReader(), customScalarAdapters)
}
/**
* writes a successful GraphQL Json response containing "data" to the given sink.
*
* Use this for testing/mocking a valid GraphQL response
*/
@JvmOverloads
fun Operation.composeJsonResponse(
jsonWriter: JsonWriter,
data: D,
customScalarAdapters: CustomScalarAdapters = CustomScalarAdapters.Empty,
) {
jsonWriter.use {
it.writeObject {
name("data")
adapter().toJson(this, customScalarAdapters, data)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy