Skip to content

Commit a77b90b

Browse files
committed
fix failing protocol test
1 parent 30481a9 commit a77b90b

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
smithyVersion=1.55.0
1+
smithyVersion=1.56.0
22
smithyGradleVersion=1.2.0

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -979,6 +979,12 @@ private void writeRequestHeaders(
979979
// Only set the content type if one can be determined.
980980
writeContentTypeHeader(context, operation, true);
981981
writeDefaultInputHeaders(context, operation);
982+
if (inputPresent) {
983+
// Handle assembling prefix headers.
984+
for (HttpBinding binding : prefixHeaders) {
985+
writePrefixHeaders(context, binding);
986+
}
987+
}
982988

983989
if (inputPresent) {
984990
for (HttpBinding binding : headers) {
@@ -987,13 +993,6 @@ private void writeRequestHeaders(
987993
}
988994

989995
flushHeadersBuffer(writer);
990-
991-
if (inputPresent) {
992-
// Handle assembling prefix headers.
993-
for (HttpBinding binding : prefixHeaders) {
994-
writePrefixHeaders(context, binding);
995-
}
996-
}
997996
writer.dedent();
998997
writer.write(closing);
999998
}
@@ -1080,9 +1079,11 @@ private void writePrefixHeaders(GenerationContext context, HttpBinding binding)
10801079
// Use a ! since we already validated the input member is defined above.
10811080
String headerValue = getInputValue(context, binding.getLocation(),
10821081
memberLocation + "![suffix]", binding.getMember(), target);
1083-
// Append the prefix to key.
1084-
writer.write("acc[`$L$${suffix.toLowerCase()}`] = $L;",
1085-
binding.getLocationName().toLowerCase(Locale.US), headerValue);
1082+
String headerKey = binding.getLocationName().toLowerCase(Locale.US) + "${suffix.toLowerCase()}";
1083+
writer.write("const headerKey = `$L`;", headerKey);
1084+
writer.write("if (!Object.keys(headers).some(key => key.toLowerCase() === headerKey.toLowerCase())) {");
1085+
writer.write(" acc[headerKey] = $L;", headerValue);
1086+
writer.write("}");
10861087
writer.write("return acc;");
10871088
});
10881089
}
@@ -1103,16 +1104,16 @@ private void writeResponseHeaders(
11031104
writeContentTypeHeader(context, operationOrError, false);
11041105
injectExtraHeaders.run();
11051106

1107+
// Handle assembling prefix headers.
1108+
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.PREFIX_HEADERS)) {
1109+
writePrefixHeaders(context, binding);
1110+
}
1111+
11061112
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.HEADER)) {
11071113
writeNormalHeader(context, binding);
11081114
}
11091115

11101116
flushHeadersBuffer(writer);
1111-
1112-
// Handle assembling prefix headers.
1113-
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.PREFIX_HEADERS)) {
1114-
writePrefixHeaders(context, binding);
1115-
}
11161117
});
11171118
}
11181119

0 commit comments

Comments
 (0)