From 24026d7fbe5b6b3163bb01858dbb5c6e1d2e9561 Mon Sep 17 00:00:00 2001 From: Timo Bryant Date: Tue, 16 Jan 2024 08:36:48 +0100 Subject: [PATCH] dynamically use proxy --- .../kotlin/de/itkl/httpClient/createHttpClient.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt index 3f88251..7bdd03f 100644 --- a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt @@ -1,5 +1,6 @@ package de.itkl.httpClient +import io.github.oshai.kotlinlogging.KotlinLogging import io.ktor.client.* import io.ktor.client.engine.* import io.ktor.client.engine.cio.* @@ -7,8 +8,11 @@ import io.ktor.client.plugins.* import io.ktor.client.plugins.contentnegotiation.* import io.ktor.http.* import io.ktor.serialization.kotlinx.json.* +import java.net.InetSocketAddress +import java.net.Socket import kotlin.time.Duration.Companion.minutes +private val Log = KotlinLogging.logger { } fun createHttpClient(): HttpClient { return HttpClient(CIO) { install(ContentNegotiation) { @@ -20,7 +24,15 @@ fun createHttpClient(): HttpClient { } engine { - proxy = ProxyBuilder.http(Url("http://localhost:9999")) + val isPortOpen = try { + Socket().use { it.connect(InetSocketAddress("localhost", 9999), 200) } + true + } catch (ex: Exception) { + false + } + if (isPortOpen) { + proxy = ProxyBuilder.http(Url("http://localhost:9999")) + } https { trustManager = TrustAllX509TrustManager() }