Unverified Commit afee2a66 authored by Russell Cohen's avatar Russell Cohen Committed by GitHub
Browse files

Support primitive ints in status bindings (#367)

parent 6df93e09
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -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")
@@ -142,3 +142,13 @@ structure EnumQueryInput {
    @required
    enum: StringEnum
}

@http(uri: "/", method: "POST")
operation StatusResponse {
    output: StatusOutput
}

structure StatusOutput {
    @httpResponseCode
    field: PrimitiveInt
}
+1 −0
Original line number Diff line number Diff line
@@ -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(
+6 −1
Original line number Diff line number Diff line
@@ -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
@@ -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 {