fun renderQueryMiddleware()

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