linuxMain.eu.codlab.http.NetworkClient.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-http-client Show documentation
Show all versions of kotlin-http-client Show documentation
Kotlin Multiplatform HttpClient
The newest version!
package eu.codlab.http
import io.ktor.client.HttpClient
import io.ktor.client.engine.cio.CIO
import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.auth.Auth
import io.ktor.client.plugins.auth.AuthConfig
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.logging.LogLevel
import io.ktor.client.plugins.logging.Logging
import io.ktor.client.plugins.websocket.WebSockets
import io.ktor.client.request.HttpRequestBuilder
import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.json.Json
@Suppress("MagicNumber")
actual fun createClient(
configuration: Configuration,
onAuth: AuthConfig.() -> Unit,
onRequest: ((request: HttpRequestBuilder) -> Unit)?
): HttpClient {
return HttpClient(CIO) {
install(Auth) {
onAuth()
}
if (configuration.enableLogs) {
install(Logging) {
level = LogLevel.ALL
}
}
if (configuration.enableSocket) {
install(WebSockets)
}
install(HttpTimeout) {
connectTimeoutMillis = configuration.connectTimeoutMillis
requestTimeoutMillis = configuration.requestTimeoutMillis
socketTimeoutMillis = configuration.socketTimeoutMillis
}
if (null != onRequest) {
install(InjectHeaderPlugin) {
this.onRequest = onRequest
}
}
install(ContentNegotiation) {
json(
Json {
encodeDefaults = true
ignoreUnknownKeys = true
prettyPrint = true
}
)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy