Skip to content

Commit 0c8d05c

Browse files
committed
fix(client-lex-runtime-v2): serialize eventstream payload properly
1 parent 80d0f18 commit 0c8d05c

File tree

3 files changed

+60
-6
lines changed

3 files changed

+60
-6
lines changed

clients/client-lex-runtime-v2/src/protocols/Aws_restJson1.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,7 +1040,8 @@ const serializeAws_restJson1AudioInputEvent_event = (input: AudioInputEvent, con
10401040
},
10411041
body: new Uint8Array(),
10421042
};
1043-
message.body = serializeAws_restJson1AudioInputEvent(input, context);
1043+
const body = serializeAws_restJson1AudioInputEvent(input, context);
1044+
message.body = context.utf8Decoder(JSON.stringify(body));
10441045
return message;
10451046
};
10461047
const serializeAws_restJson1ConfigurationEvent_event = (
@@ -1054,7 +1055,8 @@ const serializeAws_restJson1ConfigurationEvent_event = (
10541055
},
10551056
body: new Uint8Array(),
10561057
};
1057-
message.body = serializeAws_restJson1ConfigurationEvent(input, context);
1058+
const body = serializeAws_restJson1ConfigurationEvent(input, context);
1059+
message.body = context.utf8Decoder(JSON.stringify(body));
10581060
return message;
10591061
};
10601062
const serializeAws_restJson1DisconnectionEvent_event = (
@@ -1068,7 +1070,8 @@ const serializeAws_restJson1DisconnectionEvent_event = (
10681070
},
10691071
body: new Uint8Array(),
10701072
};
1071-
message.body = serializeAws_restJson1DisconnectionEvent(input, context);
1073+
const body = serializeAws_restJson1DisconnectionEvent(input, context);
1074+
message.body = context.utf8Decoder(JSON.stringify(body));
10721075
return message;
10731076
};
10741077
const serializeAws_restJson1DTMFInputEvent_event = (input: DTMFInputEvent, context: __SerdeContext): __Message => {
@@ -1079,7 +1082,8 @@ const serializeAws_restJson1DTMFInputEvent_event = (input: DTMFInputEvent, conte
10791082
},
10801083
body: new Uint8Array(),
10811084
};
1082-
message.body = serializeAws_restJson1DTMFInputEvent(input, context);
1085+
const body = serializeAws_restJson1DTMFInputEvent(input, context);
1086+
message.body = context.utf8Decoder(JSON.stringify(body));
10831087
return message;
10841088
};
10851089
const serializeAws_restJson1PlaybackCompletionEvent_event = (
@@ -1093,7 +1097,8 @@ const serializeAws_restJson1PlaybackCompletionEvent_event = (
10931097
},
10941098
body: new Uint8Array(),
10951099
};
1096-
message.body = serializeAws_restJson1PlaybackCompletionEvent(input, context);
1100+
const body = serializeAws_restJson1PlaybackCompletionEvent(input, context);
1101+
message.body = context.utf8Decoder(JSON.stringify(body));
10971102
return message;
10981103
};
10991104
const serializeAws_restJson1TextInputEvent_event = (input: TextInputEvent, context: __SerdeContext): __Message => {
@@ -1104,7 +1109,8 @@ const serializeAws_restJson1TextInputEvent_event = (input: TextInputEvent, conte
11041109
},
11051110
body: new Uint8Array(),
11061111
};
1107-
message.body = serializeAws_restJson1TextInputEvent(input, context);
1112+
const body = serializeAws_restJson1TextInputEvent(input, context);
1113+
message.body = context.utf8Decoder(JSON.stringify(body));
11081114
return message;
11091115
};
11101116
const deserializeAws_restJson1AccessDeniedException_event = async (

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsRestXml.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
import java.util.List;
2121
import java.util.Set;
2222
import software.amazon.smithy.aws.traits.protocols.RestXmlTrait;
23+
import software.amazon.smithy.codegen.core.CodegenException;
24+
import software.amazon.smithy.codegen.core.Symbol;
2325
import software.amazon.smithy.codegen.core.SymbolProvider;
2426
import software.amazon.smithy.codegen.core.SymbolReference;
27+
import software.amazon.smithy.model.Model;
2528
import software.amazon.smithy.model.knowledge.HttpBinding;
2629
import software.amazon.smithy.model.knowledge.HttpBinding.Location;
2730
import software.amazon.smithy.model.shapes.MemberShape;
@@ -36,6 +39,7 @@
3639
import software.amazon.smithy.model.traits.XmlNameTrait;
3740
import software.amazon.smithy.typescript.codegen.TypeScriptWriter;
3841
import software.amazon.smithy.typescript.codegen.integration.HttpBindingProtocolGenerator;
42+
import software.amazon.smithy.typescript.codegen.integration.ProtocolGenerator;
3943
import software.amazon.smithy.utils.SmithyInternalApi;
4044

4145

@@ -155,6 +159,26 @@ protected void serializeInputDocumentBody(
155159
serializeDocumentBody(context, documentBindings);
156160
}
157161

162+
@Override
163+
protected void serializeInputEventDocumentPayload(
164+
GenerationContext context,
165+
Shape payloadShape
166+
) {
167+
TypeScriptWriter writer = context.getWriter();
168+
Model model = context.getModel();
169+
170+
if (payloadShape instanceof StructureShape || payloadShape instanceof UnionShape) {
171+
SymbolProvider symbolProvider = context.getSymbolProvider();
172+
Symbol symbol = symbolProvider.toSymbol(payloadShape);
173+
String serFunctionName = ProtocolGenerator.getSerFunctionName(symbol, context.getProtocolName());
174+
writer.write("const bodyNode = $L(input, context);", serFunctionName);
175+
writer.write("message.body = context.utf8Decoder(bodyNode.toString());");
176+
} else {
177+
throw new CodegenException(String.format("Unexpected shape type bound to document event payload: `%s`",
178+
payloadShape.getType()));
179+
}
180+
}
181+
158182
@Override
159183
protected void serializeOutputDocumentBody(
160184
GenerationContext context,

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/RestJsonProtocolGenerator.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717

1818
import java.util.List;
1919
import java.util.Set;
20+
import software.amazon.smithy.codegen.core.CodegenException;
2021
import software.amazon.smithy.codegen.core.SymbolProvider;
22+
import software.amazon.smithy.codegen.core.Symbol;
23+
import software.amazon.smithy.model.Model;
2124
import software.amazon.smithy.model.knowledge.HttpBinding;
2225
import software.amazon.smithy.model.shapes.DocumentShape;
2326
import software.amazon.smithy.model.shapes.MemberShape;
@@ -33,6 +36,7 @@
3336
import software.amazon.smithy.typescript.codegen.integration.DocumentMemberDeserVisitor;
3437
import software.amazon.smithy.typescript.codegen.integration.DocumentMemberSerVisitor;
3538
import software.amazon.smithy.typescript.codegen.integration.HttpBindingProtocolGenerator;
39+
import software.amazon.smithy.typescript.codegen.integration.ProtocolGenerator;
3640
import software.amazon.smithy.utils.IoUtils;
3741
import software.amazon.smithy.utils.SmithyInternalApi;
3842

@@ -183,6 +187,26 @@ protected void serializeInputPayload(
183187
serializePayload(context, payloadBinding);
184188
}
185189

190+
@Override
191+
protected void serializeInputEventDocumentPayload(
192+
GenerationContext context,
193+
Shape payloadShape
194+
) {
195+
TypeScriptWriter writer = context.getWriter();
196+
Model model = context.getModel();
197+
198+
if (payloadShape instanceof StructureShape || payloadShape instanceof UnionShape) {
199+
SymbolProvider symbolProvider = context.getSymbolProvider();
200+
Symbol symbol = symbolProvider.toSymbol(payloadShape);
201+
String serFunctionName = ProtocolGenerator.getSerFunctionName(symbol, context.getProtocolName());
202+
writer.write("const body = $L(input, context);", serFunctionName);
203+
writer.write("message.body = context.utf8Decoder(JSON.stringify(body));");
204+
} else {
205+
throw new CodegenException(String.format("Unexpected shape type bound to document event payload: `%s`",
206+
payloadShape.getType()));
207+
}
208+
}
209+
186210
@Override
187211
protected void serializeOutputPayload(
188212
GenerationContext context,

0 commit comments

Comments
 (0)