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