Skip to content

Commit d52a916

Browse files
kuhemilesziemer
authored andcommitted
validate required input query params (smithy-lang#647)
1 parent f51b17a commit d52a916

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

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

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -856,21 +856,36 @@ private void writeRequestQueryParam(
856856
target
857857
);
858858

859+
boolean isRequired = binding.getMember().isRequired();
860+
writer.addImport("expectNonNull", "__expectNonNull", "@aws-sdk/smithy-client");
861+
859862
if (Objects.equals("input." + memberName + "!", queryValue)) {
863+
String value = isRequired ? "__expectNonNull($L, `" + memberName + "`)" : "$L";
860864
// simple undefined check
861865
writer.write(
862-
"$S: [,$L],",
866+
"$S: [," + value + "],",
863867
binding.getLocationName(),
864868
queryValue
865869
);
866870
} else {
867-
// undefined check with lazy eval
868-
writer.write(
869-
"$S: [() => input.$L !== void 0, () => $L],",
870-
binding.getLocationName(),
871-
memberName,
872-
queryValue
873-
);
871+
if (isRequired) {
872+
// __expectNonNull is immediately invoked and not inside a function.
873+
writer.write(
874+
"$S: [__expectNonNull(input.$L, `$L`) != null, () => $L],",
875+
binding.getLocationName(),
876+
memberName,
877+
memberName,
878+
queryValue
879+
);
880+
} else {
881+
// undefined check with lazy eval
882+
writer.write(
883+
"$S: [() => input.$L !== void 0, () => $L],",
884+
binding.getLocationName(),
885+
memberName,
886+
queryValue
887+
);
888+
}
874889
}
875890
}
876891

0 commit comments

Comments
 (0)