Skip to content

Commit b694e56

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

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

gradle.properties

+1-1
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

+18-15
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,13 @@ 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 => {");
1085+
writer.write(" return key.toLowerCase() === headerKey.toLowerCase();");
1086+
writer.write("})) {");
1087+
writer.write(" acc[headerKey] = $L;", headerValue);
1088+
writer.write("}");
10861089
writer.write("return acc;");
10871090
});
10881091
}
@@ -1103,16 +1106,16 @@ private void writeResponseHeaders(
11031106
writeContentTypeHeader(context, operationOrError, false);
11041107
injectExtraHeaders.run();
11051108

1109+
// Handle assembling prefix headers.
1110+
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.PREFIX_HEADERS)) {
1111+
writePrefixHeaders(context, binding);
1112+
}
1113+
11061114
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.HEADER)) {
11071115
writeNormalHeader(context, binding);
11081116
}
11091117

11101118
flushHeadersBuffer(writer);
1111-
1112-
// Handle assembling prefix headers.
1113-
for (HttpBinding binding : bindingIndex.getResponseBindings(operationOrError, Location.PREFIX_HEADERS)) {
1114-
writePrefixHeaders(context, binding);
1115-
}
11161119
});
11171120
}
11181121

0 commit comments

Comments
 (0)