tgbotapi/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/types/files/ContentAsStorageFile.kt

46 lines
1.4 KiB
Kotlin

package dev.inmo.tgbotapi.extensions.utils.types.files
import dev.inmo.tgbotapi.bot.TelegramBot
import dev.inmo.tgbotapi.requests.DownloadFileStream
import dev.inmo.tgbotapi.requests.abstracts.FileId
import dev.inmo.tgbotapi.requests.get.GetFile
import dev.inmo.tgbotapi.types.files.PathedFile
import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile
import dev.inmo.tgbotapi.types.message.content.abstracts.MediaContent
import dev.inmo.tgbotapi.utils.*
suspend fun convertToStorageFile(
downloadStreamAllocator: ByteReadChannelAllocator,
pathedFile: PathedFile,
mimeType: MimeType
): StorageFile {
return downloadStreamAllocator.asStorageFile(
pathedFile.fileName,
mimeType
)
}
suspend fun TelegramBot.convertToStorageFile(
pathedFile: PathedFile,
mimeType: MimeType
): StorageFile = convertToStorageFile(
execute(DownloadFileStream(pathedFile.filePath)),
pathedFile,
mimeType
)
suspend fun TelegramBot.convertToStorageFile(
fileId: FileId,
mimeType: MimeType
): StorageFile = convertToStorageFile(execute(GetFile(fileId)), mimeType)
suspend fun TelegramBot.convertToStorageFile(
file: TelegramMediaFile,
mimeType: MimeType
): StorageFile = convertToStorageFile(file.fileId, mimeType)
suspend fun TelegramBot.convertToStorageFile(
content: MediaContent,
mimeType: MimeType
): StorageFile = convertToStorageFile(content.media, mimeType)