Coverage Summary for Class: HttpClient_jvmKt (dev.suresh.http)
Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
HttpClient_jvmKt |
0%
(0/8)
|
0%
(0/4)
|
0%
(0/13)
|
0%
(0/262)
|
HttpClient_jvmKt$httpClient$1$5$1 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/8)
|
HttpClient_jvmKt$httpClient$1$6 |
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/3)
|
HttpClient_jvmKt$httpClient$1$9$1 |
0%
(0/1)
|
0%
(0/4)
|
0%
(0/1)
|
0%
(0/35)
|
Total |
0%
(0/11)
|
0%
(0/8)
|
0%
(0/16)
|
0%
(0/308)
|
package dev.suresh.http
import dev.suresh.cert.RootCA
import io.github.oshai.kotlinlogging.KLogger
import io.github.oshai.kotlinlogging.KotlinLogging
import io.ktor.client.*
import io.ktor.client.engine.java.*
import nl.altindag.ssl.SSLFactory
val log = KotlinLogging.logger {}
val customSSLFactory by lazy {
log.info { "Initializing TLS context with custom RootCAs..." }
log.info { "Root CAs: ${RootCA.commonNames}" }
SSLFactory.builder()
.withDefaultTrustMaterial()
.withTrustMaterial(RootCA.certs)
.withSwappableTrustMaterial()
.build()
}
actual fun httpClient(
name: String,
timeout: Timeout,
retry: Retry,
httpLogger: KLogger,
config: HttpClientConfig<*>.() -> Unit
) =
HttpClient(Java) {
config(this)
engine { config { sslContext(customSSLFactory.sslContext) } }
}