fun generate()

in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/MiddlewareGenerator.kt [33:65]


    fun generate() {

        writer.openBlock("public struct ${middleware.typeName}: ${middleware.getTypeInheritance()} {", "}") {
            writer.write("public let id: \$N = \"${middleware.typeName}\"", SwiftTypes.String)
            writer.write("")
            middleware.properties.forEach {
                val memberName = it.key
                val memberType = it.value
                writer.write("let $memberName: \$L", memberType)
                writer.write("")
            }
            middleware.generateInit()
            writer.write("")
            writer.write("public func handle<H>(context: Context,")
            writer.swiftFunctionParameterIndent {
                writer.write("  input: \$N,", middleware.inputType)
                writer.write("  next: H) -> \$N<\$L, MError>", SwiftTypes.Result, middleware.outputType)
            }
            writer.write("where H: Handler,")
            writer.write("Self.MInput == H.Input,")
            writer.write("Self.MOutput == H.Output,")
            writer.write("Self.Context == H.Context,")
            writer.write("Self.MError == H.MiddlewareError").openBlock("{", "}") {
                middleware.generateMiddlewareClosure()
                middleware.renderReturn()
            }
            writer.write("")
            writer.write("public typealias MInput = \$N", middleware.inputType)
            writer.write("public typealias MOutput = \$L", middleware.outputType)
            writer.write("public typealias Context = \$N", middleware.contextType)
            writer.write("public typealias MError = \$L", middleware.errorType)
        }
    }