From e87c4a0126ba1dcc2d2d3c77bb8caee71a541071 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 10 May 2020 15:26:07 +0600 Subject: [PATCH] MediaGroupMemberInputMedia deserialization --- CHANGELOG.md | 1 + .../types/InputMedia/InputMediaPhoto.kt | 4 +++- .../types/InputMedia/InputMediaVideo.kt | 4 +++- .../MediaGroupMemberInputMediaSerializer.kt | 11 ++++++++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cc072ad74..298760a7f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ * `TelegramBotAPI`: * Expected class `MimeType` was added * Field `MimeTyped#mimeType` now typed by `MimeType` instead of `String` + * `MediaGroupMemberInputMedia` children now can be deserialized (but only those ones who are declared inside library) ### 0.27.1 diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt index e98e8b38f7..f45e903b94 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt @@ -7,6 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import kotlinx.serialization.* +internal const val photoInputMediaType = "photo" + @Serializable data class InputMediaPhoto( override val file: InputFile, @@ -14,7 +16,7 @@ data class InputMediaPhoto( @SerialName(parseModeField) override val parseMode: ParseMode? = null ) : InputMedia, MediaGroupMemberInputMedia { - override val type: String = "photo" + override val type: String = photoInputMediaType override fun serialize(format: StringFormat): String = format.stringify(serializer(), this) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt index 1c32f30adb..7b12d56613 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt @@ -6,6 +6,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import kotlinx.serialization.* +internal const val videoInputMediaType = "video" + @Serializable data class InputMediaVideo( override val file: InputFile, @@ -17,7 +19,7 @@ data class InputMediaVideo( override val duration: Long? = null, override val thumb: InputFile? = null ) : InputMedia, SizedInputMedia, DuratedInputMedia, ThumbedInputMedia, MediaGroupMemberInputMedia { - override val type: String = "video" + override val type: String = videoInputMediaType override fun serialize(format: StringFormat): String = format.stringify(serializer(), this) diff --git a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt index 2f57259689..2796b3d222 100644 --- a/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt +++ b/TelegramBotAPI/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt @@ -1,6 +1,9 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia +import com.github.insanusmokrassar.TelegramBotAPI.types.typeField +import com.github.insanusmokrassar.TelegramBotAPI.utils.nonstrictJsonFormat import kotlinx.serialization.* +import kotlinx.serialization.json.JsonObjectSerializer @Serializer(MediaGroupMemberInputMedia::class) internal object MediaGroupMemberInputMediaSerializer : KSerializer { @@ -13,6 +16,12 @@ internal object MediaGroupMemberInputMediaSerializer : KSerializer nonstrictJsonFormat.fromJson(InputMediaPhoto.serializer(), json) + videoInputMediaType -> nonstrictJsonFormat.fromJson(InputMediaVideo.serializer(), json) + else -> error("Illegal type of incoming MediaGroupMemberInputMedia") + } } } \ No newline at end of file