Skip to content

Commit 3afcd5a

Browse files
Always have a string-like payload
1 parent 599523c commit 3afcd5a

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

codegen/core/src/main/java/software/amazon/smithy/python/codegen/integrations/RestJsonProtocolGenerator.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -360,33 +360,33 @@ protected void deserializePayloadBody(
360360

361361
var deserializerSymbol = symbolProvider.toSymbol(target);
362362

363-
writer.write("if body:").indent();
364-
365363
if (target.isUnionShape()) {
366364
deserializerSymbol = deserializerSymbol.expectProperty(SymbolProperties.DESERIALIZER);
367365
writer.write("""
368-
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
369-
deserializer = codec.create_deserializer(body)
370-
kwargs[$S] = $T().deserialize(deserializer)
366+
if body:
367+
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
368+
deserializer = codec.create_deserializer(body)
369+
kwargs[$S] = $T().deserialize(deserializer)
371370
""", memberName, deserializerSymbol);
372371
} else if (target.isStringShape()) {
373-
writer.write("kwargs[$S] = body.decode('utf-8')", memberName);
372+
writer.write("kwargs[$S] = body.decode('utf-8') if body else \"\"", memberName);
374373
} else if (target.isBlobShape()) {
375-
writer.write("kwargs[$S] = body", memberName);
374+
writer.write("kwargs[$S] = body or b\"\"", memberName);
376375
} else if (target.isDocumentShape()) {
377376
var schemaSymbol = deserializerSymbol.expectProperty(SymbolProperties.SCHEMA);
378377
writer.write("""
379-
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
380-
deserializer = codec.create_deserializer(body)
381-
kwargs[$S] = deserializer.read_document($T)
378+
if body:
379+
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
380+
deserializer = codec.create_deserializer(body)
381+
kwargs[$S] = deserializer.read_document($T)
382382
""", memberName, schemaSymbol);
383383
} else {
384384
writer.write("""
385-
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
386-
kwargs[$S] = codec.deserialize(body, $T)
385+
if body:
386+
codec = JSONCodec(default_timestamp_format=TimestampFormat.EPOCH_SECONDS)
387+
kwargs[$S] = codec.deserialize(body, $T)
387388
""", memberName, deserializerSymbol);
388389
}
389-
writer.dedent();
390390
}
391391

392392
@Override

0 commit comments

Comments
 (0)