HttpClientSettings.kt

package com.hexagontk.http.client

import com.hexagontk.http.SslSettings
import com.hexagontk.http.model.*
import java.net.URI

// TODO Add proxy configuration and timeouts
class HttpClientSettings(
    val baseUri: URI? = null,
    val contentType: ContentType? = null,
    val accept: List<ContentType> = emptyList(),
    val useCookies: Boolean = true,
    val headers: Headers = Headers(),
    val insecure: Boolean = false,
    val sslSettings: SslSettings? = null,
    val authorization: Authorization? = null,
    val followRedirects: Boolean = false,
) {
    fun with(
        baseUri: URI? = this.baseUri,
        contentType: ContentType? = this.contentType,
        accept: List<ContentType> = this.accept,
        useCookies: Boolean = this.useCookies,
        headers: Headers = this.headers,
        insecure: Boolean = this.insecure,
        sslSettings: SslSettings? = this.sslSettings,
        authorization: Authorization? = this.authorization,
        followRedirects: Boolean = this.followRedirects,
    ): HttpClientSettings =
        HttpClientSettings(
            baseUri,
            contentType,
            accept,
            useCookies,
            headers,
            insecure,
            sslSettings,
            authorization,
            followRedirects
        )
}