From 94a35349aa62a5a974c53124cbd79ebee7704cfa Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 20 Aug 2020 17:35:26 +0600 Subject: [PATCH] temporal update --- .../types/InputMedia/InputMediaPhoto.kt | 5 +++-- .../types/InputMedia/InputMediaVideo.kt | 10 +++++----- .../InputMedia/MediaGroupMemberInputMedia.kt | 17 +++++++++++++---- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt b/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt index 5fed0893a7..4fd94035e9 100644 --- a/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt +++ b/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt @@ -6,6 +6,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import kotlinx.serialization.* +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject internal const val photoInputMediaType = "photo" @@ -27,8 +29,7 @@ data class InputMediaPhoto( } @Transient - @Deprecated("Marked as deprecated for removal in future updates", level = DeprecationLevel.ERROR) - override val arguments: Map = error("Unsupported operation") + override val arguments: JsonElement = buildArguments(serializer()) } fun PhotoSize.toInputMediaPhoto( diff --git a/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt b/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt index aa1626ae2a..7158dc3597 100644 --- a/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt +++ b/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt @@ -5,7 +5,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import kotlinx.serialization.* -import kotlinx.serialization.properties.Properties +import kotlinx.serialization.json.JsonElement internal const val videoInputMediaType = "video" @@ -24,13 +24,13 @@ data class InputMediaVideo( override fun serialize(format: StringFormat): String = format.encodeToString(serializer(), this) + + @Transient + override val arguments: JsonElement = buildArguments(serializer()) + @SerialName(mediaField) val media: String = when (file) { is FileId -> file.fileId is MultipartFile -> file.fileId.toInputMediaFileAttachmentName() } - - @Transient - @Deprecated("Marked as deprecated for removal in future updates", level = DeprecationLevel.ERROR) - override val arguments: Map = error("Unsupported operation") } diff --git a/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMedia.kt b/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMedia.kt index ed211ca949..c4b6802fa7 100644 --- a/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMedia.kt +++ b/TelegramBotAPI-core/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMedia.kt @@ -1,12 +1,21 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.CaptionedOutput -import kotlinx.serialization.Serializable -import kotlinx.serialization.StringFormat +import kotlinx.serialization.* +import kotlinx.serialization.json.* + +internal val argumentsFormatter by lazy { + Json { + encodeDefaults = true + } +} +internal fun T.buildArguments(withSerializer: SerializationStrategy) = argumentsFormatter.encodeToJsonElement( + withSerializer, + this +) @Serializable(MediaGroupMemberInputMediaSerializer::class) interface MediaGroupMemberInputMedia : InputMedia, CaptionedOutput { fun serialize(format: StringFormat): String - @Deprecated("Marked as deprecated for removal in future updates", level = DeprecationLevel.ERROR) - val arguments: Map + val arguments: JsonElement }