in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/middlewares/handlers/HttpQueryItemMiddleware.kt [46:76]
fun renderQueryMiddleware(ctx: ProtocolGenerator.GenerationContext, op: OperationShape, httpBindingResolver: HttpBindingResolver, defaultTimestampFormat: TimestampFormatTrait.Format) {
if (MiddlewareShapeUtils.hasQueryItems(ctx.model, op)) {
val inputSymbol = MiddlewareShapeUtils.inputSymbol(ctx.symbolProvider, ctx.model, op)
val outputSymbol = MiddlewareShapeUtils.outputSymbol(ctx.symbolProvider, ctx.model, op)
val outputErrorSymbol = MiddlewareShapeUtils.outputErrorSymbol(op)
val rootNamespace = MiddlewareShapeUtils.rootNamespace(ctx.settings)
val httpTrait = httpBindingResolver.httpTrait(op)
val requestBindings = httpBindingResolver.requestBindings(op)
val queryBindings =
requestBindings.filter { it.location == HttpBinding.Location.QUERY || it.location == HttpBinding.Location.QUERY_PARAMS }
val queryLiterals = httpTrait.uri.queryLiterals
val headerMiddlewareSymbol = Symbol.builder()
.definitionFile("./$rootNamespace/models/${inputSymbol.name}+QueryItemMiddleware.swift")
.name(inputSymbol.name)
.build()
ctx.delegator.useShapeWriter(headerMiddlewareSymbol) { writer ->
writer.addImport(SwiftDependency.CLIENT_RUNTIME.target)
val queryItemMiddleware = HttpQueryItemMiddleware(
ctx,
inputSymbol,
outputSymbol,
outputErrorSymbol,
queryLiterals,
queryBindings,
defaultTimestampFormat,
writer
)
MiddlewareGenerator(writer, queryItemMiddleware).generate()
}
}
}