fun render()

in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolServiceClient.kt [20:56]


    fun render(serviceSymbol: Symbol) {
        writer.openBlock("public class ${serviceSymbol.name} {", "}") {
            writer.write("public static let clientName = \"${serviceSymbol.name}\"")
            writer.write("let client: \$N", ClientRuntimeTypes.Http.SdkHttpClient)
            writer.write("let config: \$N", serviceConfig.typesToConformConfigTo.first())
            writer.write("let serviceName = \"${serviceName}\"")
            writer.write("let encoder: \$N", ClientRuntimeTypes.Serde.RequestEncoder)
            writer.write("let decoder: \$N", ClientRuntimeTypes.Serde.ResponseDecoder)
            properties.forEach { prop ->
                prop.addImportsAndDependencies(writer)
            }
            writer.write("")
            writer.openBlock("public init(config: \$N) {", "}", serviceConfig.typesToConformConfigTo.first()) {
                writer.write("client = \$N(engine: config.httpClientEngine, config: config.httpClientConfiguration)", ClientRuntimeTypes.Http.SdkHttpClient)
                properties.forEach { prop ->
                    prop.renderInstantiation(writer)
                    if (prop.needsConfigure) {
                        prop.renderConfiguration(writer)
                    }
                    prop.renderInitialization(writer, "config")
                }

                writer.write("self.config = config")
            }
            writer.write("")
            renderConvenienceInit(serviceSymbol)
            writer.write("")
            writer.openBlock("deinit {", "}") {
                writer.write("client.close()")
            }
            writer.write("")
            renderConfig(serviceSymbol)
        }
        writer.write("")
        renderLogHandlerFactory(serviceSymbol)
        writer.write("")
    }