Skip to content

Commit fb2aa58

Browse files
authored
Add transferEncoding for Streaming RequestBody with UnsignedPayload as True (#5906)
1 parent f0e11c2 commit fb2aa58

File tree

6 files changed

+1758
-1
lines changed

6 files changed

+1758
-1
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/ProtocolSpec.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ default CodeBlock streamingMarshallerCode(IntermediateModel model, OperationMode
158158
builder.add(".requiresLength(true)");
159159
}
160160

161-
if (opModel.getAuthType() == AuthType.V4_UNSIGNED_BODY) {
161+
if (opModel.getAuthType() == AuthType.V4_UNSIGNED_BODY || opModel.isUnsignedPayload()) {
162162
builder.add(".transferEncoding(true)");
163163
}
164164

codegen/src/test/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClassTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import static software.amazon.awssdk.codegen.poet.ClientTestModels.customContentTypeModels;
2424
import static software.amazon.awssdk.codegen.poet.ClientTestModels.customPackageModels;
2525
import static software.amazon.awssdk.codegen.poet.ClientTestModels.endpointDiscoveryModels;
26+
import static software.amazon.awssdk.codegen.poet.ClientTestModels.opsWithSigv4a;
2627
import static software.amazon.awssdk.codegen.poet.ClientTestModels.queryServiceModels;
2728
import static software.amazon.awssdk.codegen.poet.ClientTestModels.restJsonServiceModels;
2829
import static software.amazon.awssdk.codegen.poet.ClientTestModels.rpcv2ServiceModels;
@@ -116,6 +117,12 @@ public void asyncClientBatchManager() {
116117
assertThat(aSyncClientBatchManager, generatesTo("test-batchmanager-async.java"));
117118
}
118119

120+
@Test
121+
public void asyncClientWithStreamingUnsignedPayload() {
122+
AsyncClientClass asyncClientClass = createAsyncClientClass(opsWithSigv4a(), false);
123+
assertThat(asyncClientClass, generatesTo("test-unsigned-payload-trait-async-client-class.java"));
124+
}
125+
119126
private AsyncClientClass createAsyncClientClass(IntermediateModel model) {
120127
return new AsyncClientClass(GeneratorTaskParams.create(model, "sources/", "tests/", "resources/"));
121128
}

codegen/src/test/java/software/amazon/awssdk/codegen/poet/client/SyncClientClassTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static software.amazon.awssdk.codegen.poet.ClientTestModels.customContentTypeModels;
2222
import static software.amazon.awssdk.codegen.poet.ClientTestModels.customPackageModels;
2323
import static software.amazon.awssdk.codegen.poet.ClientTestModels.endpointDiscoveryModels;
24+
import static software.amazon.awssdk.codegen.poet.ClientTestModels.opsWithSigv4a;
2425
import static software.amazon.awssdk.codegen.poet.ClientTestModels.queryServiceModels;
2526
import static software.amazon.awssdk.codegen.poet.ClientTestModels.restJsonServiceModels;
2627
import static software.amazon.awssdk.codegen.poet.ClientTestModels.rpcv2ServiceModels;
@@ -104,4 +105,11 @@ private SyncClientClass createSyncClientClass(IntermediateModel model, boolean u
104105
model.getCustomizationConfig().setUseSraAuth(useSraAuth);
105106
return createSyncClientClass(model);
106107
}
108+
109+
@Test
110+
public void syncClientClassWithUnsignedPayload() {
111+
SyncClientClass syncClientClass = createSyncClientClass(opsWithSigv4a());
112+
assertThat(syncClientClass, generatesTo("test-unsigned-payload-trait-sync-client-class.java"));
113+
}
114+
107115
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/ops-with-auth-sigv4a-value/service-2.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,26 @@
215215
"auth": ["aws.auth#sigv4","aws.auth#sigv4a"],
216216
"unsignedPayload": true,
217217
"documentation": "<p>Performs a GET request to get-row with unsigned payload and auth as sigv4 and sigv4a.</p>"
218+
},
219+
"opWithSigv4UnSignedPayloadAndStreaming": {
220+
"name": "opWithSigv4UnSignedPayload",
221+
"http": {
222+
"method": "GET",
223+
"requestUri": "/get-row/"
224+
},
225+
"input": {
226+
"shape": "GetRowRequestWithStreaming"
227+
},
228+
"output": {
229+
"shape": "GetRowResponse"
230+
},
231+
"errors": [
232+
{
233+
"shape": "InvalidInputException"
234+
}
235+
],
236+
"unsignedPayload": true,
237+
"documentation": "<p>Performs a GET with unsignedPayload streaming.</p>"
218238
}
219239
},
220240
"shapes": {
@@ -287,6 +307,17 @@
287307
},
288308
"exception": true
289309
},
310+
"GetRowRequestWithStreaming":{
311+
"type":"structure",
312+
"members":{
313+
"Body":{
314+
"shape":"Body",
315+
"streaming":true
316+
}
317+
},
318+
"payload":"Body"
319+
},
320+
"Body":{"type":"blob"},
290321
"String":{"type":"string"},
291322
"invalidInputMessage":{"type":"string"}
292323
},

0 commit comments

Comments
 (0)