package dev.inmo.tgbotapi.bot.Ktor.base import dev.inmo.micro_utils.coroutines.safely import dev.inmo.tgbotapi.bot.Ktor.KtorCallFactory import dev.inmo.tgbotapi.requests.DownloadFile import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper import io.ktor.client.HttpClient import io.ktor.client.request.get import kotlinx.serialization.json.Json object DownloadFileRequestCallFactory : KtorCallFactory { override suspend fun makeCall( client: HttpClient, urlsKeeper: TelegramAPIUrlsKeeper, request: Request, jsonFormatter: Json ): T? = (request as? DownloadFile) ?.let { val fullUrl = "${urlsKeeper.fileBaseUrl}/${it.filePath}" return safely { @Suppress("UNCHECKED_CAST") client.get(fullUrl) as T // always ByteArray } } }