override fun render()

in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/httpResponse/bindingTraits/HttpResponseTraitWithoutHttpPayload.kt [38:75]


    override fun render() {
        val bodyMembers = responseBindings.filter { it.location == HttpBinding.Location.DOCUMENT }

        val bodyMembersWithoutQueryTrait = bodyMembers
            .filter { !it.member.hasTrait(HttpQueryTrait::class.java) }
            .toMutableSet()

        val bodyMembersWithoutQueryTraitMemberNames = bodyMembersWithoutQueryTrait.map { ctx.symbolProvider.toMemberName(it.member) }

        if (bodyMembersWithoutQueryTrait.isNotEmpty()) {
            writer.write("if case .stream(let reader) = httpResponse.body,")
            writer.indent()
            writer.write("let responseDecoder = decoder {")
            writer.write("let data = reader.toBytes().toData()")
            writer.write("let output: ${outputShapeName}Body = try responseDecoder.decode(responseBody: data)")
            bodyMembersWithoutQueryTraitMemberNames.sorted().forEach {
                writer.write("self.$it = output.$it")
            }
            writer.dedent()
            writer.write("} else {")
            writer.indent()
            bodyMembersWithoutQueryTrait.sortedBy { it.memberName }.forEach {
                val memberName = ctx.symbolProvider.toMemberName(it.member)
                val type = ctx.model.expectShape(it.member.target)
                val value = if (ctx.symbolProvider.toSymbol(it.member).isBoxed()) "nil" else {
                    when (type) {
                        is IntegerShape, is ByteShape, is ShortShape, is LongShape -> 0
                        is FloatShape, is DoubleShape -> 0.0
                        is BooleanShape -> false
                        else -> "nil"
                    }
                }
                writer.write("self.$memberName = $value")
            }
            writer.dedent()
            writer.write("}")
        }
    }