diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/InputFile.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/InputFile.kt index 7926308dbf..8b70d3d154 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/InputFile.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/InputFile.kt @@ -2,8 +2,10 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts import com.github.insanusmokrassar.TelegramBotAPI.utils.StorageFile import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor import java.io.File +@Serializable(InputFileSerializer::class) sealed class InputFile { abstract val fileId: String } @@ -12,16 +14,17 @@ sealed class InputFile { /** * Contains file id or file url */ -@Serializable(FileIdSerializer::class) +@Serializable(InputFileSerializer::class) data class FileId( override val fileId: String ) : InputFile() fun String.toInputFile(): InputFile = FileId(this) -@Serializer(FileId::class) -object FileIdSerializer : KSerializer { - override fun serialize(encoder: Encoder, obj: FileId) = encoder.encodeString(obj.fileId) +@Serializer(InputFile::class) +object InputFileSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(FileId::class.toString()) + override fun serialize(encoder: Encoder, obj: InputFile) = encoder.encodeString(obj.fileId) override fun deserialize(decoder: Decoder): FileId = FileId(decoder.decodeString()) } @@ -29,7 +32,7 @@ object FileIdSerializer : KSerializer { /** * Contains info about file for sending */ -@Serializable +@Serializable(InputFileSerializer::class) data class MultipartFile ( val file: StorageFile, val mimeType: String = file.contentType, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt index 184b344255..212346bf6d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPhoto.kt @@ -13,11 +13,10 @@ import kotlinx.serialization.json.JsonObject data class SetChatPhoto ( @SerialName(chatIdField) override val chatId: ChatIdentifier, - @Transient val photo: MultipartFile = throw IllegalArgumentException("Unfortunately, this type of objects can't be parsed automatically") ): ChatRequest, MultipartRequest { override fun method(): String = "setChatPhoto" override fun resultSerializer(): KSerializer = BooleanSerializer override val mediaMap: Map = mapOf(photoField to photo) - override val paramsJson: JsonObject = this.toJson(serializer()) + override val paramsJson: JsonObject = toJson(serializer()) } 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 8aa06288d6..59c81efe57 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt @@ -184,7 +184,7 @@ const val certificateField = "certificate" const val pointField = "point" const val xShiftField = "x_shift" const val yShiftField = "y_shift" -const val scaleField = "y_shift" +const val scaleField = "scale" const val currencyField = "currency" diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InlineQueryResult/serializers/InlineQueryResultSerializer.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InlineQueryResult/serializers/InlineQueryResultSerializer.kt index 62296d41e5..2e6e9736ff 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InlineQueryResult/serializers/InlineQueryResultSerializer.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InlineQueryResult/serializers/InlineQueryResultSerializer.kt @@ -3,11 +3,12 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQue import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.* import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor import sun.reflect.generics.reflectiveObjects.NotImplementedException @Serializer(InlineQueryResult::class) -object InlineQueryResultSerializer : - KSerializer { +object InlineQueryResultSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(InlineQueryResult::class.toString()) override fun serialize(encoder: Encoder, obj: InlineQueryResult) { when(obj) { is InlineQueryResultArticle -> InlineQueryResultArticle.serializer().serialize(encoder, obj) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InputMessageContentSerializer.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InputMessageContentSerializer.kt index 2114cea456..77c3fa4486 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InputMessageContentSerializer.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/InputMessageContentSerializer.kt @@ -3,9 +3,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InputMessageContent.* import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor @Serializer(InputMessageContent::class) object InputMessageContentSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(InputMessageContent::class.toString()) override fun serialize(encoder: Encoder, obj: InputMessageContent) { when (obj) { is InputContactMessageContent -> InputContactMessageContent.serializer().serialize(encoder, obj) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt index 739468c8bb..7d909efd13 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt @@ -9,7 +9,6 @@ import kotlinx.serialization.* @Serializable data class InputMediaAudio( - @Transient override val file: InputFile = throw IllegalStateException("Must be created with file"), override val caption: String? = null, @SerialName(parseModeField) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaSerializer.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaSerializer.kt index f63bad756b..fd4b3f9266 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaSerializer.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaSerializer.kt @@ -1,9 +1,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor @Serializer(InputMedia::class) object InputMediaSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(InputMedia::class.toString()) override fun serialize(encoder: Encoder, obj: InputMedia) { when (obj) { is InputMediaVideo -> InputMediaVideo.serializer().serialize(encoder, obj) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt index 2eb606f93f..c435bef316 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/MediaGroupMemberInputMediaSerializer.kt @@ -1,13 +1,19 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor @Serializer(MediaGroupMemberInputMedia::class) object MediaGroupMemberInputMediaSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(MediaGroupMemberInputMedia::class.toString()) override fun serialize(encoder: Encoder, obj: MediaGroupMemberInputMedia) { when (obj) { is InputMediaPhoto -> InputMediaPhoto.serializer().serialize(encoder, obj) is InputMediaVideo -> InputMediaVideo.serializer().serialize(encoder, obj) } } + + override fun deserialize(decoder: Decoder): MediaGroupMemberInputMedia { + TODO("not implemented") + } } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/buttons/KeyboardMarkupSerializer.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/buttons/KeyboardMarkupSerializer.kt index 97de7e2ef1..d69825d7c2 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/buttons/KeyboardMarkupSerializer.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/buttons/KeyboardMarkupSerializer.kt @@ -1,9 +1,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.buttons import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor @Serializer(KeyboardMarkup::class) object KeyboardMarkupSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName(KeyboardMarkup::class.toString()) override fun serialize(encoder: Encoder, obj: KeyboardMarkup) { when(obj) { is ForceReply -> ForceReply.serializer().serialize(encoder, obj) @@ -12,4 +14,8 @@ object KeyboardMarkupSerializer : KSerializer { is ReplyKeyboardRemove -> ReplyKeyboardRemove.serializer().serialize(encoder, obj) } } + + override fun deserialize(decoder: Decoder): KeyboardMarkup { + TODO("not implemented") + } }