diff --git a/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageMarshallableGenerator.kt b/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageMarshallableGenerator.kt index b5b9a10cd..0b2fc8136 100644 --- a/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageMarshallableGenerator.kt +++ b/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageMarshallableGenerator.kt @@ -155,33 +155,6 @@ class MessageMarshallableGenerator( } } - /** - * - * if let headerValue = value.blob { - * headers.append(.init(name: "blob", value: .byteArray(headerValue))) - * } - * if let headerValue = value.boolean { - * headers.append(.init(name: "boolean", value: .bool(headerValue))) - * } - * if let headerValue = value.byte { - * headers.append(.init(name: "byte", value: .byte(headerValue))) - * } - * if let headerValue = value.int { - * headers.append(.init(name: "int", value: .int32(Int32(headerValue)))) - * } - * if let headerValue = value.long { - * headers.append(.init(name: "long", value: .int64(Int64(headerValue)))) - * } - * if let headerValue = value.short { - * headers.append(.init(name: "short", value: .int16(headerValue))) - * } - * if let headerValue = value.string { - * headers.append(.init(name: "string", value: .string(headerValue))) - * } - * if let headerValue = value.timestamp { - * headers.append(.init(name: "timestamp", value: .timestamp(headerValue))) - * } - */ private fun renderSerializeEventHeader( ctx: ProtocolGenerator.GenerationContext, member: MemberShape, @@ -193,10 +166,10 @@ class MessageMarshallableGenerator( ShapeType.BOOLEAN -> "bool" ShapeType.BYTE -> "byte" ShapeType.SHORT -> "int16" - ShapeType.INTEGER -> "int32" + ShapeType.INTEGER, ShapeType.INT_ENUM -> "int32" ShapeType.LONG -> "int64" ShapeType.BLOB -> "byteArray" - ShapeType.STRING -> "string" + ShapeType.STRING, ShapeType.ENUM -> "string" ShapeType.TIMESTAMP -> "timestamp" else -> throw CodegenException("unsupported shape type `${target.type}` for eventHeader member `$member`; target: $target") } @@ -207,9 +180,23 @@ class MessageMarshallableGenerator( ShapeType.INTEGER -> { writer.write("headers.append(.init(name: \"${member.memberName}\", value: .\$L(Int32(headerValue))))", headerValue) } + ShapeType.INT_ENUM -> { + writer.write( + "headers.append(.init(name: \$S, value: .\$L(Int32(headerValue.rawValue))))", + member.memberName, + headerValue, + ) + } ShapeType.LONG -> { writer.write("headers.append(.init(name: \"${member.memberName}\", value: .\$L(Int64(headerValue))))", headerValue) } + ShapeType.ENUM -> { + writer.write( + "headers.append(.init(name: \$S, value: .\$L(headerValue.rawValue)))", + member.memberName, + headerValue, + ) + } else -> { writer.write("headers.append(.init(name: \"${member.memberName}\", value: .\$L(headerValue)))", headerValue) } diff --git a/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageUnmarshallableGenerator.kt b/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageUnmarshallableGenerator.kt index ba6688fbe..bbfea3ab0 100644 --- a/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageUnmarshallableGenerator.kt +++ b/smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/events/MessageUnmarshallableGenerator.kt @@ -156,10 +156,10 @@ class MessageUnmarshallableGenerator( ShapeType.BOOLEAN -> "bool" ShapeType.BYTE -> "byte" ShapeType.SHORT -> "int16" - ShapeType.INTEGER -> "int32" + ShapeType.INTEGER, ShapeType.INT_ENUM -> "int32" ShapeType.LONG -> "int64" ShapeType.BLOB -> "byteArray" - ShapeType.STRING -> "string" + ShapeType.STRING, ShapeType.ENUM -> "string" ShapeType.TIMESTAMP -> "timestamp" else -> throw CodegenException("unsupported eventHeader shape: member=$hdrBinding; targetShape=$target") } @@ -170,6 +170,12 @@ class MessageUnmarshallableGenerator( ShapeType.INTEGER, ShapeType.LONG -> { writer.write("event.\$L = Int(value)", memberName) } + ShapeType.INT_ENUM -> { + writer.write("event.\$L = .init(rawValue: Int(value))", memberName) + } + ShapeType.ENUM -> { + writer.write("event.\$L = .init(rawValue: value)", memberName) + } else -> { writer.write("event.\$L = value", memberName) }