1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-03 00:15:27 +00:00
tgbotapi/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt

73 lines
2.1 KiB
Kotlin
Raw Normal View History

2019-02-27 06:01:04 +00:00
package com.github.insanusmokrassar.TelegramBotAPI.requests.webhook
2019-02-26 01:45:56 +00:00
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
2019-03-15 08:12:17 +00:00
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.DataRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.MultipartRequestImpl
2019-02-26 01:45:56 +00:00
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import kotlinx.serialization.*
2020-03-22 07:37:01 +00:00
import kotlinx.serialization.builtins.serializer
2019-02-26 01:45:56 +00:00
fun SetWebhook(
url: String,
certificate: MultipartFile,
2019-02-26 01:45:56 +00:00
maxAllowedConnections: Int? = null,
allowedUpdates: List<String>? = null
): MultipartRequestImpl<SetWebhook, Map<String, MultipartFile>, Boolean> = MultipartRequestImpl(
SetWebhook(
2019-02-26 01:45:56 +00:00
url,
null,
2019-02-26 01:45:56 +00:00
maxAllowedConnections,
allowedUpdates
),
mapOf(certificateField to certificate)
)
fun SetWebhook(
url: String,
certificate: FileId,
maxAllowedConnections: Int? = null,
allowedUpdates: List<String>? = null
): SetWebhook = SetWebhook(
url,
certificate.fileId,
maxAllowedConnections,
allowedUpdates
)
2019-02-26 01:45:56 +00:00
fun SetWebhook(
url: String,
maxAllowedConnections: Int? = null,
allowedUpdates: List<String>? = null
) = SetWebhook(
url,
null,
maxAllowedConnections,
allowedUpdates
)
2019-02-26 01:45:56 +00:00
@Serializable
data class SetWebhook internal constructor(
@SerialName(urlField)
val url: String,
@SerialName(certificateField)
val certificateFile: String? = null,
@SerialName(maxAllowedConnectionsField)
val maxAllowedConnections: Int? = null,
@SerialName(allowedUpdatesField)
val allowedUpdates: List<String>? = null
) : DataRequest<Boolean> {
override fun method(): String = "setWebhook"
2019-12-02 08:35:37 +00:00
override val resultDeserializer: DeserializationStrategy<Boolean>
2020-03-22 07:37:01 +00:00
get() = Boolean.serializer()
2019-12-02 08:35:37 +00:00
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
2019-02-26 01:45:56 +00:00
init {
maxAllowedConnections ?.let {
if (it !in allowedConnectionsLength) {
throw IllegalArgumentException("Allowed connection for webhook must be in $allowedConnectionsLength range (but passed $it)")
}
}
}
}