From 0af6e6ca159f3f6cf15b3df28da0cc1ebd84cd31 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 16 Apr 2019 15:45:29 +0800 Subject: [PATCH] PollOption added --- CHANGELOG.md | 2 + .../TelegramBotAPI/types/Common.kt | 1 + .../types/polls/AnonymousPollOption.kt | 37 +++++++++++++++++++ .../types/polls/abstracts/PollOption.kt | 2 + 4 files changed, 42 insertions(+) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/AnonymousPollOption.kt create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/abstracts/PollOption.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 13f254fb2d..a4fdbc38d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## 0.13.0 Telegram Polls +* `PollOption` added + ## 0.12.0 Webhooks * Added `DataRequest` interface which replace `Data` interface diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt index 59c81efe57..b773f7098e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt @@ -75,6 +75,7 @@ const val hasCustomCertificateField = "has_custom_certificate" const val pendingUpdateCountField = "pending_update_count" const val lastErrorDateField = "last_error_date" const val lastErrorMessageField = "last_error_message" +const val votesCountField = "voter_count" const val photoUrlField = "photo_url" diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/AnonymousPollOption.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/AnonymousPollOption.kt new file mode 100644 index 0000000000..c29522aeb5 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/AnonymousPollOption.kt @@ -0,0 +1,37 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.polls + +import com.github.insanusmokrassar.TelegramBotAPI.types.textField +import com.github.insanusmokrassar.TelegramBotAPI.types.votesCountField +import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor + +@Serializable(PollOptionSerializer::class) +sealed class PollOption { + abstract val text: String + abstract val votes: Int +} + +@Serializable +data class AnonymousPollOption ( + @SerialName(textField) + override val text: String, + @SerialName(votesCountField) + override val votes: Int +) : PollOption() + +object PollOptionSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(PollOption::class.simpleName ?: "PollOption") + + override fun deserialize(decoder: Decoder): PollOption = AnonymousPollOption.serializer().deserialize( + decoder + ) + + override fun serialize(encoder: Encoder, obj: PollOption) { + when (obj) { + is AnonymousPollOption -> AnonymousPollOption.serializer().serialize( + encoder, + obj + ) + } + } +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/abstracts/PollOption.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/abstracts/PollOption.kt new file mode 100644 index 0000000000..2d18915931 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/polls/abstracts/PollOption.kt @@ -0,0 +1,2 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.polls.abstracts +