All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.insanusmokrassar.AutoPostTelegramBot.base.models.HttpClientConfig.kt Maven / Gradle / Ivy

package com.github.insanusmokrassar.AutoPostTelegramBot.base.models

import okhttp3.Credentials
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import java.net.InetSocketAddress
import java.net.Proxy
import java.util.concurrent.TimeUnit

data class HttpClientConfig(
    val proxy: ProxySettings? = null,
    val connectTimeout: Long = 0,
    val writeTimeout: Long = 0,
    val readTimeout: Long = 0,
    val debug: Boolean = false
) {
    private val builder: OkHttpClient.Builder by lazy {
        OkHttpClient.Builder().also {
            builder ->
            proxy ?.let {
                _ ->
                builder.proxy(
                    Proxy(
                        Proxy.Type.SOCKS,
                        InetSocketAddress(
                            proxy.host,
                            proxy.port
                        )
                    )
                )
                proxy.password ?.let {
                    password ->
                    builder.proxyAuthenticator {
                        _, response ->
                        response.request().newBuilder().apply {
                            addHeader(
                                "Proxy-Authorization",
                                Credentials.basic(proxy.username ?: "", password)
                            )
                        }.build()
                    }
                }
            }
            builder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
            builder.writeTimeout(writeTimeout, TimeUnit.MILLISECONDS)
            builder.readTimeout(readTimeout, TimeUnit.MILLISECONDS)
            if (debug) {
                builder.addInterceptor(
                    HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
                )
            }
        }
    }

    fun createClient(): OkHttpClient {
        return builder.build()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy