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

jvmMain.com.github.insanusmokrassar.TelegramBotAPI.updateshandlers.KtorUpdatesCIOPoller.kt Maven / Gradle / Ivy

There is a newer version: 0.28.3
Show newest version
package com.github.insanusmokrassar.TelegramBotAPI.updateshandlers

import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorRequestsExecutor
import com.github.insanusmokrassar.TelegramBotAPI.types.ALL_UPDATES_LIST
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.cio.CIO
import io.ktor.client.engine.cio.endpoint
import io.ktor.util.KtorExperimentalAPI

@KtorExperimentalAPI
fun KtorUpdatesPoller(
    telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper,
    timeoutSeconds: Int? = null,
    oneTimeUpdatesLimit: Int? = null,
    allowedUpdates: List = ALL_UPDATES_LIST,
    exceptionsHandler: (Exception) -> Boolean = { true },
    updatesReceiver: UpdateReceiver
): KtorUpdatesPoller {
    val executor = KtorRequestsExecutor(
        telegramAPIUrlsKeeper,
        HttpClient(
            CIO.create {
                endpoint {
                    timeoutSeconds ?.times(1000) ?.also { timeOutMillis ->
                        keepAliveTime = timeOutMillis.toLong()
                    }
                    connectTimeout = 1000
                }
            }
        )
    )

    return KtorUpdatesPoller(
        executor,
        timeoutSeconds,
        oneTimeUpdatesLimit,
        allowedUpdates,
        exceptionsHandler,
        updatesReceiver
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy