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)
}
}