Skip to content

Commit 6aa22dc

Browse files
calvincestarimartinbonninBoD
authored
feature: Enhanced Client Awareness (v5) (#6537)
* Refactor HTTP body composers * Remove duplicate `extensions` declaration * Reformat file * Use version constant * Add deprecated function * Update API signature files * Adds property to client and request * Set value from request * Update API signature files * Adds request composer test * Adds body extensions tests * Remove unnecessary test * Refactor into single object and fix version * Correctly set flag value * Fix null test * update tests * Update fixtures when making a release --------- Co-authored-by: Martin Bonnin <[email protected]> Co-authored-by: BoD <[email protected]>
1 parent 7d3d42b commit 6aa22dc

File tree

19 files changed

+194
-34
lines changed

19 files changed

+194
-34
lines changed

libraries/apollo-api/api/apollo-api.api

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public final class com/apollographql/apollo/api/ApolloOptionalAdapter : com/apol
5050
}
5151

5252
public final class com/apollographql/apollo/api/ApolloRequest : com/apollographql/apollo/api/ExecutionOptions {
53-
public synthetic fun <init> (Lcom/apollographql/apollo/api/Operation;Ljava/util/UUID;Lcom/apollographql/apollo/api/ExecutionContext;Lcom/apollographql/apollo/api/http/HttpMethod;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
53+
public synthetic fun <init> (Lcom/apollographql/apollo/api/Operation;Ljava/util/UUID;Lcom/apollographql/apollo/api/ExecutionContext;Lcom/apollographql/apollo/api/http/HttpMethod;Ljava/util/List;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
5454
public fun getCanBeBatched ()Ljava/lang/Boolean;
5555
public fun getEnableAutoPersistedQueries ()Ljava/lang/Boolean;
5656
public fun getExecutionContext ()Lcom/apollographql/apollo/api/ExecutionContext;
@@ -64,6 +64,7 @@ public final class com/apollographql/apollo/api/ApolloRequest : com/apollographq
6464
public final fun getRetryOnError ()Ljava/lang/Boolean;
6565
public fun getSendApqExtensions ()Ljava/lang/Boolean;
6666
public fun getSendDocument ()Ljava/lang/Boolean;
67+
public final fun getSendEnhancedClientAwareness ()Z
6768
public final fun newBuilder ()Lcom/apollographql/apollo/api/ApolloRequest$Builder;
6869
public final fun newBuilder (Lcom/apollographql/apollo/api/Operation;)Lcom/apollographql/apollo/api/ApolloRequest$Builder;
6970
}
@@ -94,6 +95,7 @@ public final class com/apollographql/apollo/api/ApolloRequest$Builder : com/apol
9495
public final fun getRetryOnError ()Ljava/lang/Boolean;
9596
public fun getSendApqExtensions ()Ljava/lang/Boolean;
9697
public fun getSendDocument ()Ljava/lang/Boolean;
98+
public final fun getSendEnhancedClientAwareness ()Z
9799
public fun httpHeaders (Ljava/util/List;)Lcom/apollographql/apollo/api/ApolloRequest$Builder;
98100
public synthetic fun httpHeaders (Ljava/util/List;)Ljava/lang/Object;
99101
public fun httpMethod (Lcom/apollographql/apollo/api/http/HttpMethod;)Lcom/apollographql/apollo/api/ApolloRequest$Builder;
@@ -107,6 +109,7 @@ public final class com/apollographql/apollo/api/ApolloRequest$Builder : com/apol
107109
public synthetic fun sendApqExtensions (Ljava/lang/Boolean;)Ljava/lang/Object;
108110
public fun sendDocument (Ljava/lang/Boolean;)Lcom/apollographql/apollo/api/ApolloRequest$Builder;
109111
public synthetic fun sendDocument (Ljava/lang/Boolean;)Ljava/lang/Object;
112+
public final fun sendEnhancedClientAwareness (Z)Lcom/apollographql/apollo/api/ApolloRequest$Builder;
110113
}
111114

112115
public final class com/apollographql/apollo/api/ApolloResponse {
@@ -928,8 +931,9 @@ public final class com/apollographql/apollo/api/http/DefaultHttpRequestComposer
928931
public final class com/apollographql/apollo/api/http/DefaultHttpRequestComposer$Companion {
929932
public final fun appendQueryParameters (Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
930933
public final fun buildParamsMap (Lcom/apollographql/apollo/api/Operation;Lcom/apollographql/apollo/api/CustomScalarAdapters;ZZ)Lokio/ByteString;
934+
public final fun buildParamsMap (Lcom/apollographql/apollo/api/Operation;Lcom/apollographql/apollo/api/CustomScalarAdapters;ZZZ)Lokio/ByteString;
931935
public final fun buildPostBody (Lcom/apollographql/apollo/api/Operation;Lcom/apollographql/apollo/api/CustomScalarAdapters;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lcom/apollographql/apollo/api/http/HttpBody;
932-
public final fun buildPostBody (Lcom/apollographql/apollo/api/Operation;Lcom/apollographql/apollo/api/CustomScalarAdapters;ZLjava/lang/String;)Lcom/apollographql/apollo/api/http/HttpBody;
936+
public final fun buildPostBody (Lcom/apollographql/apollo/api/Operation;Lcom/apollographql/apollo/api/CustomScalarAdapters;ZZLjava/lang/String;)Lcom/apollographql/apollo/api/http/HttpBody;
933937
public final fun composePayload (Lcom/apollographql/apollo/api/ApolloRequest;)Ljava/util/Map;
934938
public final fun getHEADER_ACCEPT_NAME ()Ljava/lang/String;
935939
public final fun getHEADER_ACCEPT_VALUE_DEFER ()Ljava/lang/String;

libraries/apollo-api/api/apollo-api.klib.api

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,8 @@ final class <#A: com.apollographql.apollo.api/Operation.Data> com.apollographql.
322322
final fun <get-sendApqExtensions>(): kotlin/Boolean? // com.apollographql.apollo.api/ApolloRequest.sendApqExtensions.<get-sendApqExtensions>|<get-sendApqExtensions>(){}[0]
323323
final val sendDocument // com.apollographql.apollo.api/ApolloRequest.sendDocument|{}sendDocument[0]
324324
final fun <get-sendDocument>(): kotlin/Boolean? // com.apollographql.apollo.api/ApolloRequest.sendDocument.<get-sendDocument>|<get-sendDocument>(){}[0]
325+
final val sendEnhancedClientAwareness // com.apollographql.apollo.api/ApolloRequest.sendEnhancedClientAwareness|{}sendEnhancedClientAwareness[0]
326+
final fun <get-sendEnhancedClientAwareness>(): kotlin/Boolean // com.apollographql.apollo.api/ApolloRequest.sendEnhancedClientAwareness.<get-sendEnhancedClientAwareness>|<get-sendEnhancedClientAwareness>(){}[0]
325327

326328
final fun <#A1: com.apollographql.apollo.api/Operation.Data> newBuilder(com.apollographql.apollo.api/Operation<#A1>): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.newBuilder|newBuilder(com.apollographql.apollo.api.Operation<0:0>){0§<com.apollographql.apollo.api.Operation.Data>}[0]
327329
final fun newBuilder(): com.apollographql.apollo.api/ApolloRequest.Builder<#A> // com.apollographql.apollo.api/ApolloRequest.newBuilder|newBuilder(){}[0]
@@ -356,6 +358,8 @@ final class <#A: com.apollographql.apollo.api/Operation.Data> com.apollographql.
356358
final fun <get-sendApqExtensions>(): kotlin/Boolean? // com.apollographql.apollo.api/ApolloRequest.Builder.sendApqExtensions.<get-sendApqExtensions>|<get-sendApqExtensions>(){}[0]
357359
final var sendDocument // com.apollographql.apollo.api/ApolloRequest.Builder.sendDocument|{}sendDocument[0]
358360
final fun <get-sendDocument>(): kotlin/Boolean? // com.apollographql.apollo.api/ApolloRequest.Builder.sendDocument.<get-sendDocument>|<get-sendDocument>(){}[0]
361+
final var sendEnhancedClientAwareness // com.apollographql.apollo.api/ApolloRequest.Builder.sendEnhancedClientAwareness|{}sendEnhancedClientAwareness[0]
362+
final fun <get-sendEnhancedClientAwareness>(): kotlin/Boolean // com.apollographql.apollo.api/ApolloRequest.Builder.sendEnhancedClientAwareness.<get-sendEnhancedClientAwareness>|<get-sendEnhancedClientAwareness>(){}[0]
359363

360364
final fun addExecutionContext(com.apollographql.apollo.api/ExecutionContext): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.Builder.addExecutionContext|addExecutionContext(com.apollographql.apollo.api.ExecutionContext){}[0]
361365
final fun addHttpHeader(kotlin/String, kotlin/String): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.Builder.addHttpHeader|addHttpHeader(kotlin.String;kotlin.String){}[0]
@@ -372,6 +376,7 @@ final class <#A: com.apollographql.apollo.api/Operation.Data> com.apollographql.
372376
final fun retryOnError(kotlin/Boolean?): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.Builder.retryOnError|retryOnError(kotlin.Boolean?){}[0]
373377
final fun sendApqExtensions(kotlin/Boolean?): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.Builder.sendApqExtensions|sendApqExtensions(kotlin.Boolean?){}[0]
374378
final fun sendDocument(kotlin/Boolean?): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.Builder.sendDocument|sendDocument(kotlin.Boolean?){}[0]
379+
final fun sendEnhancedClientAwareness(kotlin/Boolean): com.apollographql.apollo.api/ApolloRequest.Builder<#A1> // com.apollographql.apollo.api/ApolloRequest.Builder.sendEnhancedClientAwareness|sendEnhancedClientAwareness(kotlin.Boolean){}[0]
375380
}
376381
}
377382

@@ -501,7 +506,8 @@ final class com.apollographql.apollo.api.http/DefaultHttpRequestComposer : com.a
501506

502507
final fun (kotlin/String).appendQueryParameters(kotlin.collections/Map<kotlin/String, kotlin/String>): kotlin/String // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.appendQueryParameters|[email protected](kotlin.collections.Map<kotlin.String,kotlin.String>){}[0]
503508
final fun <#A2: com.apollographql.apollo.api/Operation.Data> buildParamsMap(com.apollographql.apollo.api/Operation<#A2>, com.apollographql.apollo.api/CustomScalarAdapters, kotlin/Boolean, kotlin/Boolean): okio/ByteString // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.buildParamsMap|buildParamsMap(com.apollographql.apollo.api.Operation<0:0>;com.apollographql.apollo.api.CustomScalarAdapters;kotlin.Boolean;kotlin.Boolean){0§<com.apollographql.apollo.api.Operation.Data>}[0]
504-
final fun <#A2: com.apollographql.apollo.api/Operation.Data> buildPostBody(com.apollographql.apollo.api/Operation<#A2>, com.apollographql.apollo.api/CustomScalarAdapters, kotlin/Boolean, kotlin/String?): com.apollographql.apollo.api.http/HttpBody // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.buildPostBody|buildPostBody(com.apollographql.apollo.api.Operation<0:0>;com.apollographql.apollo.api.CustomScalarAdapters;kotlin.Boolean;kotlin.String?){0§<com.apollographql.apollo.api.Operation.Data>}[0]
509+
final fun <#A2: com.apollographql.apollo.api/Operation.Data> buildParamsMap(com.apollographql.apollo.api/Operation<#A2>, com.apollographql.apollo.api/CustomScalarAdapters, kotlin/Boolean, kotlin/Boolean, kotlin/Boolean): okio/ByteString // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.buildParamsMap|buildParamsMap(com.apollographql.apollo.api.Operation<0:0>;com.apollographql.apollo.api.CustomScalarAdapters;kotlin.Boolean;kotlin.Boolean;kotlin.Boolean){0§<com.apollographql.apollo.api.Operation.Data>}[0]
510+
final fun <#A2: com.apollographql.apollo.api/Operation.Data> buildPostBody(com.apollographql.apollo.api/Operation<#A2>, com.apollographql.apollo.api/CustomScalarAdapters, kotlin/Boolean, kotlin/Boolean, kotlin/String?): com.apollographql.apollo.api.http/HttpBody // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.buildPostBody|buildPostBody(com.apollographql.apollo.api.Operation<0:0>;com.apollographql.apollo.api.CustomScalarAdapters;kotlin.Boolean;kotlin.Boolean;kotlin.String?){0§<com.apollographql.apollo.api.Operation.Data>}[0]
505511
final fun <#A2: com.apollographql.apollo.api/Operation.Data> buildPostBody(com.apollographql.apollo.api/Operation<#A2>, com.apollographql.apollo.api/CustomScalarAdapters, kotlin/String?, kotlin/Function1<com.apollographql.apollo.api.json/JsonWriter, kotlin/Unit>): com.apollographql.apollo.api.http/HttpBody // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.buildPostBody|buildPostBody(com.apollographql.apollo.api.Operation<0:0>;com.apollographql.apollo.api.CustomScalarAdapters;kotlin.String?;kotlin.Function1<com.apollographql.apollo.api.json.JsonWriter,kotlin.Unit>){0§<com.apollographql.apollo.api.Operation.Data>}[0]
506512
final fun <#A2: com.apollographql.apollo.api/Operation.Data> composePayload(com.apollographql.apollo.api/ApolloRequest<#A2>): kotlin.collections/Map<kotlin/String, kotlin/Any?> // com.apollographql.apollo.api.http/DefaultHttpRequestComposer.Companion.composePayload|composePayload(com.apollographql.apollo.api.ApolloRequest<0:0>){0§<com.apollographql.apollo.api.Operation.Data>}[0]
507513
}

libraries/apollo-api/src/commonMain/kotlin/com/apollographql/apollo/api/ApolloRequest.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ private constructor(
4040
val retryOnError: Boolean?,
4141
@ApolloExperimental
4242
val failFastIfOffline: Boolean?,
43+
val sendEnhancedClientAwareness: Boolean,
4344
) : ExecutionOptions {
4445

4546
fun newBuilder(): Builder<D> = newBuilder(operation)
@@ -59,6 +60,7 @@ private constructor(
5960
.failFastIfOffline(failFastIfOffline)
6061
.ignoreApolloClientHttpHeaders(ignoreApolloClientHttpHeaders)
6162
.ignoreUnknownKeys(ignoreUnknownKeys)
63+
.sendEnhancedClientAwareness(sendEnhancedClientAwareness)
6264
}
6365

6466
class Builder<D : Operation.Data>(
@@ -90,6 +92,8 @@ private constructor(
9092
@ApolloExperimental
9193
var failFastIfOffline: Boolean? = null
9294
private set
95+
var sendEnhancedClientAwareness: Boolean = true
96+
private set
9397

9498

9599
fun requestUuid(requestUuid: Uuid) = apply {
@@ -150,6 +154,10 @@ private constructor(
150154
this.failFastIfOffline = failFastIfOffline
151155
}
152156

157+
fun sendEnhancedClientAwareness(sendEnhancedClientAwareness: Boolean): Builder<D> = apply {
158+
this.sendEnhancedClientAwareness = sendEnhancedClientAwareness
159+
}
160+
153161
fun build(): ApolloRequest<D> {
154162
return ApolloRequest(
155163
operation = operation,
@@ -164,7 +172,8 @@ private constructor(
164172
ignoreApolloClientHttpHeaders = ignoreApolloClientHttpHeaders,
165173
retryOnError = retryOnError,
166174
failFastIfOffline = failFastIfOffline,
167-
ignoreUnknownKeys = ignoreUnknownKeys
175+
ignoreUnknownKeys = ignoreUnknownKeys,
176+
sendEnhancedClientAwareness = sendEnhancedClientAwareness,
168177
)
169178
}
170179
}

0 commit comments

Comments
 (0)