1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-11-20 22:35:46 +00:00

TelegramAPIUrlsKeeper

This commit is contained in:
2019-07-25 16:25:18 +08:00
parent d8887bb7ff
commit 84ad751792
6 changed files with 69 additions and 12 deletions

View File

@@ -1,8 +1,17 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
abstract class BaseRequestsExecutor(
token: String,
hostUrl: String = "https://api.telegram.org"
protected val telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper
) : RequestsExecutor {
protected val baseUrl: String = "$hostUrl/bot$token"
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API", ReplaceWith("telegramAPIUrlsKeeper.commonAPIUrl"))
protected val baseUrl: String
get() = telegramAPIUrlsKeeper.commonAPIUrl
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API")
constructor(
token: String,
hostUrl: String = "https://api.telegram.org"
) : this (TelegramAPIUrlsKeeper(token, hostUrl))
}

View File

@@ -9,6 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestL
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
import io.ktor.client.HttpClient
import io.ktor.client.call.HttpClientCall
import io.ktor.client.engine.HttpClientEngine
@@ -17,22 +18,33 @@ import kotlinx.coroutines.delay
import kotlinx.serialization.json.Json
class KtorRequestsExecutor(
token: String,
telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper,
private val client: HttpClient = HttpClient(),
hostUrl: String = "https://api.telegram.org",
callsFactories: List<KtorCallFactory> = emptyList(),
excludeDefaultFactories: Boolean = false,
private val requestsLimiter: RequestLimiter = EmptyLimiter,
private val jsonFormatter: Json = Json.nonstrict
) : BaseRequestsExecutor(token, hostUrl) {
) : BaseRequestsExecutor(telegramAPIUrlsKeeper) {
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API")
constructor(
token: String,
client: HttpClient = HttpClient(),
hostUrl: String = "https://api.telegram.org",
callsFactories: List<KtorCallFactory> = emptyList(),
excludeDefaultFactories: Boolean = false,
requestsLimiter: RequestLimiter = EmptyLimiter,
jsonFormatter: Json = Json.nonstrict
) : this(TelegramAPIUrlsKeeper(token, hostUrl), client, callsFactories, excludeDefaultFactories, requestsLimiter, jsonFormatter)
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API")
constructor(
token: String,
engine: HttpClientEngine? = null,
hostUrl: String = "https://api.telegram.org"
) : this(
token,
engine ?.let { HttpClient(engine) } ?: HttpClient(),
hostUrl
TelegramAPIUrlsKeeper(token, hostUrl),
engine ?.let { HttpClient(engine) } ?: HttpClient()
)
private val callsFactories: List<KtorCallFactory> = callsFactories.run {
@@ -49,7 +61,7 @@ class KtorRequestsExecutor(
for (factory in callsFactories) {
call = factory.prepareCall(
client,
baseUrl,
telegramAPIUrlsKeeper.commonAPIUrl,
request
)
if (call != null) {