From ab6688bbaa6b85d9b88a22b756fe07d7c2ba27c5 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 6 Feb 2020 12:07:23 +0600 Subject: [PATCH] additional KtorUpdatesPoller method --- CHANGELOG.md | 5 +++ gradle.properties | 4 +-- .../updateshandlers/KtorUpdatesCIOPoller.kt | 33 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e94a69ea5..b99e1792e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,11 @@ ### 0.23.1 +* Versions updates: + * Klock `1.8.6` -> `1.8.7` + * Ktor `1.3.0` -> `1.3.1` +* Now it is possible to get updates by polling with custom executor engine + ## 0.22.0 * **`KtorCallFactory` must return `HttpStatement` instead of `HttpClientCall`** diff --git a/gradle.properties b/gradle.properties index 6e11c9788e..a1baaceff5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,8 +2,8 @@ kotlin.code.style=official kotlin_version=1.3.61 kotlin_coroutines_version=1.3.3 kotlin_serialisation_runtime_version=0.14.0 -klock_version=1.8.6 +klock_version=1.8.7 uuid_version=0.0.7 -ktor_version=1.3.0 +ktor_version=1.3.1 gradle_bintray_plugin_version=1.8.4 diff --git a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesCIOPoller.kt b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesCIOPoller.kt index 0d7906a6a1..626119b11d 100644 --- a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesCIOPoller.kt +++ b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesCIOPoller.kt @@ -6,6 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.Update import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper import com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdateReceiver import io.ktor.client.HttpClient +import io.ktor.client.engine.HttpClientEngine import io.ktor.client.engine.cio.CIO import io.ktor.client.engine.cio.endpoint import io.ktor.util.KtorExperimentalAPI @@ -42,3 +43,35 @@ fun KtorUpdatesPoller( updatesReceiver ) } + +@KtorExperimentalAPI +fun KtorUpdatesPoller( + telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, + timeoutSeconds: Int? = null, + oneTimeUpdatesLimit: Int? = null, + allowedUpdates: List = ALL_UPDATES_LIST, + exceptionsHandler: (Exception) -> Boolean = { true }, + clientEngine: HttpClientEngine = CIO.create { + endpoint { + timeoutSeconds ?.times(1000) ?.also { timeOutMillis -> + keepAliveTime = timeOutMillis.toLong() + } + connectTimeout = 1000 + } + }, + updatesReceiver: UpdateReceiver +): KtorUpdatesPoller { + val executor = KtorRequestsExecutor( + telegramAPIUrlsKeeper, + HttpClient(clientEngine) + ) + + return KtorUpdatesPoller( + executor, + timeoutSeconds, + oneTimeUpdatesLimit, + allowedUpdates, + exceptionsHandler, + updatesReceiver + ) +}