1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-03 00:15:27 +00:00
tgbotapi/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt

39 lines
1.5 KiB
Kotlin
Raw Normal View History

2018-12-26 08:07:24 +00:00
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
import com.github.insanusmokrassar.TelegramBotAPI.utils.mapWithCommonValues
import io.ktor.client.HttpClient
2019-07-22 23:43:32 +00:00
import io.ktor.client.request.forms.*
2019-05-12 11:15:31 +00:00
import io.ktor.http.Headers
import io.ktor.http.HttpHeaders
2018-12-26 08:07:24 +00:00
2019-04-26 03:12:01 +00:00
class MultipartRequestCallFactory : AbstractRequestCallFactory() {
override fun <T : Any> prepareCallBody(
2018-12-26 08:07:24 +00:00
client: HttpClient,
baseUrl: String,
request: Request<T>
2019-04-26 03:12:01 +00:00
): Any? = (request as? MultipartRequest) ?.let { castedRequest ->
MultiPartFormDataContent(
formData {
val params = castedRequest.paramsJson.mapWithCommonValues()
for ((key, value) in castedRequest.mediaMap + params) {
when (value) {
is MultipartFile -> append(
key,
2019-07-22 23:43:32 +00:00
InputProvider {
value.file.asInput()
},
2019-04-26 03:12:01 +00:00
Headers.build {
append(HttpHeaders.ContentType, value.mimeType)
append(HttpHeaders.ContentDisposition, "filename=${value.fileId}")
}
)
is FileId -> append(key, value.fileId)
else -> append(key, value.toString())
2018-12-26 08:07:24 +00:00
}
}
2019-04-26 03:12:01 +00:00
}
)
2018-12-26 08:07:24 +00:00
}
}