Loading codegen-test/model/rest-json-extras.smithy +11 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ apply QueryPrecedence @httpRequestTests([ @restJson1 service RestJsonExtras { version: "2019-12-16", operations: [EnumPayload, StringPayload, PrimitiveIntHeader, EnumQuery] operations: [EnumPayload, StringPayload, PrimitiveIntHeader, EnumQuery, StatusResponse] } @http(uri: "/EnumPayload", method: "POST") Loading Loading @@ -142,3 +142,13 @@ structure EnumQueryInput { @required enum: StringEnum } @http(uri: "/", method: "POST") operation StatusResponse { output: StatusOutput } structure StatusOutput { @httpResponseCode field: PrimitiveInt } codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/generators/http/ResponseBindingGenerator.kt +1 −0 Original line number Diff line number Diff line Loading @@ -248,6 +248,7 @@ class ResponseBindingGenerator(protocolConfig: ProtocolConfig, private val opera rust("let $parsedValue = $parsedValue?;") } } // TODO: this doesn't support non-optional vectors (which may be eventually added) when (rustType) { is RustType.Vec -> rust( Loading codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/protocols/AwsRestJson.kt +6 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import software.amazon.smithy.rust.codegen.rustlang.CargoDependency import software.amazon.smithy.rust.codegen.rustlang.RustWriter import software.amazon.smithy.rust.codegen.rustlang.Writable import software.amazon.smithy.rust.codegen.rustlang.asType import software.amazon.smithy.rust.codegen.rustlang.conditionalBlock import software.amazon.smithy.rust.codegen.rustlang.rust import software.amazon.smithy.rust.codegen.rustlang.rustBlock import software.amazon.smithy.rust.codegen.rustlang.rustTemplate Loading Loading @@ -399,7 +400,11 @@ class AwsRestJsonGenerator( writable { rust("#T(response.body().as_ref())?", deserializer) } } } HttpBinding.Location.RESPONSE_CODE -> writable("Some(response.status().as_u16() as _)") HttpBinding.Location.RESPONSE_CODE -> writable { conditionalBlock("Some(", ")", symbolProvider.toSymbol(member).isOptional()) { rust("response.status().as_u16() as _") } } HttpBinding.Location.PREFIX_HEADERS -> { val sym = httpBindingGenerator.generateDeserializePrefixHeaderFn(binding) writable { Loading Loading
codegen-test/model/rest-json-extras.smithy +11 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ apply QueryPrecedence @httpRequestTests([ @restJson1 service RestJsonExtras { version: "2019-12-16", operations: [EnumPayload, StringPayload, PrimitiveIntHeader, EnumQuery] operations: [EnumPayload, StringPayload, PrimitiveIntHeader, EnumQuery, StatusResponse] } @http(uri: "/EnumPayload", method: "POST") Loading Loading @@ -142,3 +142,13 @@ structure EnumQueryInput { @required enum: StringEnum } @http(uri: "/", method: "POST") operation StatusResponse { output: StatusOutput } structure StatusOutput { @httpResponseCode field: PrimitiveInt }
codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/generators/http/ResponseBindingGenerator.kt +1 −0 Original line number Diff line number Diff line Loading @@ -248,6 +248,7 @@ class ResponseBindingGenerator(protocolConfig: ProtocolConfig, private val opera rust("let $parsedValue = $parsedValue?;") } } // TODO: this doesn't support non-optional vectors (which may be eventually added) when (rustType) { is RustType.Vec -> rust( Loading
codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/smithy/protocols/AwsRestJson.kt +6 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import software.amazon.smithy.rust.codegen.rustlang.CargoDependency import software.amazon.smithy.rust.codegen.rustlang.RustWriter import software.amazon.smithy.rust.codegen.rustlang.Writable import software.amazon.smithy.rust.codegen.rustlang.asType import software.amazon.smithy.rust.codegen.rustlang.conditionalBlock import software.amazon.smithy.rust.codegen.rustlang.rust import software.amazon.smithy.rust.codegen.rustlang.rustBlock import software.amazon.smithy.rust.codegen.rustlang.rustTemplate Loading Loading @@ -399,7 +400,11 @@ class AwsRestJsonGenerator( writable { rust("#T(response.body().as_ref())?", deserializer) } } } HttpBinding.Location.RESPONSE_CODE -> writable("Some(response.status().as_u16() as _)") HttpBinding.Location.RESPONSE_CODE -> writable { conditionalBlock("Some(", ")", symbolProvider.toSymbol(member).isOptional()) { rust("response.status().as_u16() as _") } } HttpBinding.Location.PREFIX_HEADERS -> { val sym = httpBindingGenerator.generateDeserializePrefixHeaderFn(binding) writable { Loading