additional KtorUpdatesPoller method

This commit is contained in:
InsanusMokrassar 2020-02-06 12:07:23 +06:00
parent f2701b920f
commit ab6688bbaa
3 changed files with 40 additions and 2 deletions

View File

@ -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`**

View File

@ -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

View File

@ -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<String> = ALL_UPDATES_LIST,
exceptionsHandler: (Exception) -> Boolean = { true },
clientEngine: HttpClientEngine = CIO.create {
endpoint {
timeoutSeconds ?.times(1000) ?.also { timeOutMillis ->
keepAliveTime = timeOutMillis.toLong()
}
connectTimeout = 1000
}
},
updatesReceiver: UpdateReceiver<Update>
): KtorUpdatesPoller {
val executor = KtorRequestsExecutor(
telegramAPIUrlsKeeper,
HttpClient(clientEngine)
)
return KtorUpdatesPoller(
executor,
timeoutSeconds,
oneTimeUpdatesLimit,
allowedUpdates,
exceptionsHandler,
updatesReceiver
)
}