Skip to content

Commit 83e3a53

Browse files
committed
find streaming blob output member name
1 parent 18fe335 commit 83e3a53

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/CommandGenerator.java

+20-4
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import software.amazon.smithy.model.traits.DocumentationTrait;
5050
import software.amazon.smithy.model.traits.ErrorTrait;
5151
import software.amazon.smithy.model.traits.InternalTrait;
52+
import software.amazon.smithy.model.traits.StreamingTrait;
5253
import software.amazon.smithy.rulesengine.traits.EndpointRuleSetTrait;
5354
import software.amazon.smithy.typescript.codegen.documentation.StructureExampleGenerator;
5455
import software.amazon.smithy.typescript.codegen.endpointsV2.RuleSetParameterFinder;
@@ -274,10 +275,25 @@ private String getCommandExample(String serviceName, String configName, String c
274275
}
275276

276277
private String getReadStreamExample() {
277-
boolean hasStreamingBlobOutput = false;
278-
if (hasStreamingBlobOutput) {
279-
String memberName = "";
280-
return "const byte = await response[`%s`].transformToByteArray();".formatted(memberName);
278+
String streamingBlobOutputMemberName = model.expectShape(operation.getOutputShape())
279+
.asStructureShape().get()
280+
.getAllMembers()
281+
.values()
282+
.stream()
283+
.filter(ms -> {
284+
Shape target = model.expectShape(ms.getTarget());
285+
return target.isBlobShape()
286+
&& (ms.hasTrait(StreamingTrait.class) || target.hasTrait(StreamingTrait.class));
287+
})
288+
.findFirst()
289+
.map(MemberShape::getMemberName)
290+
.orElse("");
291+
292+
if (!streamingBlobOutputMemberName.isEmpty()) {
293+
return """
294+
// Read the stream or discard it to free the socket.
295+
const bytes = await response[`%s`].transformToByteArray();\n"""
296+
.formatted(streamingBlobOutputMemberName);
281297
}
282298
return "";
283299
}

0 commit comments

Comments
 (0)