From 22e8b06fdac2cfd0658875dce776030db6a8bae1 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 2 Jun 2020 21:18:49 +0600 Subject: [PATCH] BotBuilder fixes --- CHANGELOG.md | 2 ++ .../extensions/api/BotBuilder.kt | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aadcf0fef..7c7264821b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,8 @@ * `TelegramBotAPI-extensions-api`: * A lot of `RequesstExecutor#getChat` extensions was added for more explicit types showing * New `RequesstExecutor#setMyCommands` extension was added + * New field `BotBuilder#ktorClientEngineFactory` introduced + * Field `BotBuilder#ktorClientEngine` now is deprecated * `TelegramBotAPI-extensions-utils`: * `safely` function was introduced. It is in `PreviewFeature` state currently * `makeLinkToMessage` extensions has been added diff --git a/TelegramBotAPI-extensions-api/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/api/BotBuilder.kt b/TelegramBotAPI-extensions-api/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/api/BotBuilder.kt index fc8a7f8856..c6af136a44 100644 --- a/TelegramBotAPI-extensions-api/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/api/BotBuilder.kt +++ b/TelegramBotAPI-extensions-api/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/extensions/api/BotBuilder.kt @@ -4,8 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.RequestsExecutor import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig -import io.ktor.client.engine.HttpClientEngine -import io.ktor.client.engine.ProxyConfig +import io.ktor.client.engine.* /** * @param proxy Standard ktor [ProxyConfig] @@ -14,20 +13,30 @@ import io.ktor.client.engine.ProxyConfig */ data class BotBuilder internal constructor( var proxy: ProxyConfig? = null, + @Deprecated("ktorClientEngineFactory parameter will be used preferable. In future this parameter will be removed") var ktorClientEngine: HttpClientEngine? = null, + var ktorClientEngineFactory: HttpClientEngineFactory? = null, var ktorClientConfig: (HttpClientConfig<*>.() -> Unit) ? = null ) { - internal fun createHttpClient(): HttpClient = ktorClientEngine ?.let { engine -> + internal fun createHttpClient(): HttpClient = ktorClientEngineFactory ?.let { + HttpClient( + it.create { + this@create.proxy = this@BotBuilder.proxy ?: this@create.proxy + } + ) { + ktorClientConfig ?.let { it() } + } + } ?: ktorClientEngine ?.let { engine -> HttpClient(engine) { ktorClientConfig ?.let { it() } engine { - proxy = this@BotBuilder.proxy ?: proxy + this@engine.proxy = this@BotBuilder.proxy ?: this@engine.proxy } } } ?: HttpClient { ktorClientConfig ?.let { it() } engine { - proxy = this@BotBuilder.proxy ?: proxy + this@engine.proxy = this@BotBuilder.proxy ?: this@engine.proxy } } }