From 8330aa1b3d4e705cd9f2a96d0cba2398b83ef33c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 11:32:39 +0600 Subject: [PATCH 01/18] start 0.18.0 --- CHANGELOG.md | 2 ++ build.gradle | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77d1e75bdf..53e3a528a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # TelegramBotAPI changelog +## 0.18.0 + ## 0.17.0 Libraries updates: diff --git a/build.gradle b/build.gradle index bd7283475e..6204b9b1f1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -project.version = "0.17.0" +project.version = "0.18.0" project.group = "com.github.insanusmokrassar" buildscript { From 56f36523dbc77661e68f829b5dd60b2be419f8e3 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 11:50:46 +0600 Subject: [PATCH 02/18] "RawMessage" usages replaced by "Message" usages --- CHANGELOG.md | 6 +++++ .../bot/Ktor/KtorRequestsExecutor.kt | 13 +++++---- .../Ktor/base/MultipartRequestCallFactory.kt | 8 +++--- .../bot/exceptions/RequestException.kt | 10 +++---- .../TelegramBotAPI/requests/DeleteMessage.kt | 2 +- .../TelegramBotAPI/requests/ForwardMessage.kt | 7 ++--- .../TelegramBotAPI/requests/GetMe.kt | 2 +- .../TelegramBotAPI/requests/GetUpdates.kt | 2 +- .../TelegramBotAPI/requests/StopPoll.kt | 2 +- .../requests/abstracts/Request.kt | 11 ++++---- .../requests/answers/AnswerCallbackQuery.kt | 2 +- .../requests/answers/AnswerInlineQuery.kt | 2 +- .../abstracts/AnswerPreCheckoutQuery.kt | 2 +- .../payments/abstracts/AnswerShippingQuery.kt | 2 +- .../requests/chat/ExportChatInviteLink.kt | 2 +- .../TelegramBotAPI/requests/chat/LeaveChat.kt | 2 +- .../requests/chat/get/GetChat.kt | 2 +- .../chat/get/GetChatAdministrators.kt | 2 +- .../requests/chat/get/GetChatMembersCount.kt | 2 +- .../requests/chat/members/GetChatMember.kt | 2 +- .../requests/chat/members/KickChatMember.kt | 2 +- .../chat/members/PromoteChatMember.kt | 2 +- .../chat/members/RestrictChatMember.kt | 2 +- .../requests/chat/members/UnbanChatMember.kt | 2 +- .../requests/chat/modify/DeleteChatPhoto.kt | 2 +- .../requests/chat/modify/PinChatMessage.kt | 2 +- .../chat/modify/SetChatDescription.kt | 2 +- .../chat/modify/SetChatPermissions.kt | 2 +- .../requests/chat/modify/SetChatPhoto.kt | 2 +- .../requests/chat/modify/SetChatTitle.kt | 2 +- .../requests/chat/modify/UnpinChatMessage.kt | 2 +- .../chat/stickers/DeleteChatStickerSet.kt | 2 +- .../chat/stickers/SetChatStickerSet.kt | 2 +- .../EditChatMessageLiveLocation.kt | 5 ++-- .../StopChatMessageLiveLocation.kt | 5 ++-- .../ReplyMarkup/EditChatMessageReplyMarkup.kt | 5 ++-- .../edit/abstracts/EditChatMessage.kt | 4 +-- .../edit/abstracts/EditInlineMessage.kt | 2 +- .../edit/caption/EditChatMessageCaption.kt | 5 ++-- .../edit/media/EditChatMessageMedia.kt | 5 ++-- .../requests/edit/text/EditChatMessageText.kt | 5 ++-- .../games/abstracts/GetGameHighScores.kt | 2 +- .../requests/games/abstracts/SetGameScore.kt | 2 +- .../TelegramBotAPI/requests/get/GetFile.kt | 2 +- .../requests/get/GetStickerSet.kt | 2 +- .../requests/get/GetUserProfilePhotos.kt | 2 +- .../requests/send/SendAction.kt | 2 +- .../requests/send/SendContact.kt | 9 ++++--- .../requests/send/SendLocation.kt | 11 ++++---- .../requests/send/SendMessage.kt | 11 ++++---- .../TelegramBotAPI/requests/send/SendPoll.kt | 9 ++++--- .../TelegramBotAPI/requests/send/SendVenue.kt | 13 ++++----- .../requests/send/games/SendGame.kt | 7 ++--- .../requests/send/media/SendAnimation.kt | 21 ++++++++------- .../requests/send/media/SendAudio.kt | 21 ++++++++------- .../requests/send/media/SendDocument.kt | 17 ++++++------ .../requests/send/media/SendMediaGroup.kt | 12 ++++----- .../requests/send/media/SendPhoto.kt | 15 ++++++----- .../requests/send/media/SendSticker.kt | 11 ++++---- .../requests/send/media/SendVideo.kt | 21 ++++++++------- .../requests/send/media/SendVideoNote.kt | 21 ++++++++------- .../requests/send/media/SendVoice.kt | 19 ++++++------- .../send/media/base/MultipartRequestImpl.kt | 3 ++- .../requests/send/payments/SendInvoice.kt | 7 ++--- .../requests/stickers/DeleteStickerFromSet.kt | 2 +- .../stickers/SetStickerPositionInSet.kt | 2 +- .../requests/stickers/UploadStickerFile.kt | 2 +- .../stickers/abstracts/StickerSetAction.kt | 2 +- .../requests/webhook/DeleteWebhook.kt | 2 +- .../requests/webhook/GetWebhookInfo.kt | 2 +- .../requests/webhook/SetWebhook.kt | 2 +- .../types/CallbackQuery/RawCallbackQuery.kt | 9 ++++--- .../TelegramBotAPI/types/Response.kt | 11 +++----- .../abstracts/extended/ExtendedPublicChat.kt | 6 ++++- .../chat/extended/ExtendedChannelChatImpl.kt | 5 +++- .../chat/extended/ExtendedGroupChatImpl.kt | 5 +++- .../extended/ExtendedSupergroupChatImpl.kt | 5 +++- .../types/message/RawMessage.kt | 2 +- .../types/message/abstracts/Message.kt | 27 ++++++++++++++++++- .../types/message/content/ContactContent.kt | 4 +-- .../types/message/content/GameContent.kt | 4 +-- .../types/message/content/LocationContent.kt | 4 +-- .../types/message/content/PollContent.kt | 4 +-- .../types/message/content/TextContent.kt | 8 +++--- .../types/message/content/VenueContent.kt | 4 +-- .../content/abstracts/ResendableContent.kt | 6 ++--- .../message/content/media/AnimationContent.kt | 18 +++---------- .../message/content/media/AudioContent.kt | 4 +-- .../message/content/media/DocumentContent.kt | 4 +-- .../message/content/media/PhotoContent.kt | 4 +-- .../message/content/media/StickerContent.kt | 4 +-- .../message/content/media/VideoContent.kt | 4 +-- .../message/content/media/VideoNoteContent.kt | 6 ++--- .../message/content/media/VoiceContent.kt | 4 +-- .../TelegramBotAPI/types/update/RawUpdate.kt | 22 +++++++++------ .../utils/extensions/Executes.kt | 2 +- 96 files changed, 319 insertions(+), 256 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53e3a528a6..ac971f5ff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## 0.18.0 +* `RawMessage` now is internal class +* All `RawMessage` usages was replaced with `Message` interface + * `TelegramBotAPIMessageDeserializationStrategy` was created. It was used for deserialization of Telegram Bot API + incoming messages + * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages + ## 0.17.0 Libraries updates: diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt index abc0e49fd8..dd9756ac87 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt @@ -7,6 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.newRequestExcep import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.EmptyLimiter import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestLimiter import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request +import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.extractResult import com.github.insanusmokrassar.TelegramBotAPI.types.Response import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper @@ -16,6 +17,7 @@ import io.ktor.client.engine.HttpClientEngine import io.ktor.util.cio.toByteArray import kotlinx.coroutines.delay import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElementSerializer class KtorRequestsExecutor( telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, @@ -74,11 +76,11 @@ class KtorRequestsExecutor( val content = call.response.use { it.content.toByteArray().toString(Charsets.UTF_8) } - val responseObject = jsonFormatter.parse( - Response.serializer(request.resultSerializer()), - content - ) - responseObject.result ?: responseObject.parameters ?.let { + val responseObject = jsonFormatter.extractResult(content) + + val result = responseObject.result ?.let { + jsonFormatter.fromJson(request.resultDeserializer(), it) + } ?: responseObject.parameters ?.let { val error = it.error if (error is RetryAfterError) { delay(error.leftToRetry) @@ -93,6 +95,7 @@ class KtorRequestsExecutor( "Can't get result object from $content" ) } + result } } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt index aa5aad04ad..5884104497 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/base/MultipartRequestCallFactory.kt @@ -3,9 +3,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.utils.mapWithCommonValues import io.ktor.client.HttpClient -import io.ktor.client.request.forms.* +import io.ktor.client.request.forms.MultiPartFormDataContent +import io.ktor.client.request.forms.formData import io.ktor.http.Headers import io.ktor.http.HttpHeaders +import kotlinx.io.core.readBytes class MultipartRequestCallFactory : AbstractRequestCallFactory() { @@ -21,9 +23,7 @@ class MultipartRequestCallFactory : AbstractRequestCallFactory() { when (value) { is MultipartFile -> append( key, - InputProvider { - value.file.asInput() - }, + value.file.asInput().readBytes(), Headers.build { append(HttpHeaders.ContentType, value.mimeType) append(HttpHeaders.ContentDisposition, "filename=${value.fileId}") diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt index 777ccec5d7..9fd0ef8e03 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/exceptions/RequestException.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.Response import java.io.IOException fun newRequestException( - response: Response<*>, + response: Response, plainAnswer: String, message: String? = null, cause: Throwable? = null @@ -15,7 +15,7 @@ fun newRequestException( } sealed class RequestException constructor( - val response: Response<*>, + val response: Response, val plainAnswer: String, message: String? = null, cause: Throwable? = null @@ -24,13 +24,13 @@ sealed class RequestException constructor( cause ) -class CommonRequestException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) : +class CommonRequestException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) : RequestException(response, plainAnswer, message, cause) -class UnauthorizedException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) : +class UnauthorizedException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) : RequestException(response, plainAnswer, message, cause) -class ReplyMessageNotFoundException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) : +class ReplyMessageNotFoundException(response: Response, plainAnswer: String, message: String?, cause: Throwable?) : RequestException(response, plainAnswer, message, cause) @Deprecated( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt index 60158eafdf..f024b0c2b4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/DeleteMessage.kt @@ -15,5 +15,5 @@ data class DeleteMessage( ) : SimpleRequest, MessageAction { override fun method(): String = "deleteMessage" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt index 71294b1b7c..4b8f0cc6bc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/ForwardMessage.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -16,12 +17,12 @@ data class ForwardMessage( override val messageId: MessageIdentifier, @SerialName(disableNotificationField) val disableNotification: Boolean = false -): SimpleRequest, MessageAction { +): SimpleRequest, MessageAction { @Transient override val chatId: ChatIdentifier get() = fromChatId override fun method(): String = "forwardMessage" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt index ae0b4eb48d..dc67a84e05 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt @@ -8,5 +8,5 @@ import kotlinx.serialization.Serializable @Serializable class GetMe : SimpleRequest { override fun method(): String = "getMe" - override fun resultSerializer(): KSerializer = User.serializer() + override fun resultDeserializer(): KSerializer = User.serializer() } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt index 3c697c3a7d..a79db0d088 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt @@ -38,5 +38,5 @@ data class GetUpdates( ): SimpleRequest> { override fun method(): String = "getUpdates" - override fun resultSerializer(): KSerializer> = ArrayListSerializer(RawUpdate.serializer()) + override fun resultDeserializer(): KSerializer> = ArrayListSerializer(RawUpdate.serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt index f5327fa719..09002cb049 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/StopPoll.kt @@ -18,5 +18,5 @@ data class StopPoll( override val replyMarkup: InlineKeyboardMarkup? = null ) : MessageAction, SimpleRequest, ReplyMarkup { override fun method(): String = "stopPoll" - override fun resultSerializer(): KSerializer = Poll.serializer() + override fun resultDeserializer(): KSerializer = Poll.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt index 3776c1c69d..617eb399ef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt @@ -8,14 +8,13 @@ import kotlinx.serialization.json.JsonObject @Serializable(RequestSerializer::class) interface Request { fun method(): String - fun resultSerializer(): KSerializer + fun resultDeserializer(): DeserializationStrategy fun json(): JsonObject = toJsonWithoutNulls(RequestSerializer) } object RequestSerializer : KSerializer> by ContextSerializer(Request::class) -fun StringFormat.extractResult( - from: String, - dataSerializer: KSerializer -): Response { - return parse(Response.serializer(dataSerializer), from) +fun StringFormat.extractResult( + from: String +): Response { + return parse(Response.serializer(), from) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt index 08b7464bdc..3f911c8e0e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerCallbackQuery.kt @@ -20,7 +20,7 @@ data class AnswerCallbackQuery( val cachedTimeSeconds: Int? = null ) : SimpleRequest { override fun method(): String = "answerCallbackQuery" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } fun CallbackQuery.createAnswer( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt index ed4e3a29aa..7c47d11bb6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/AnswerInlineQuery.kt @@ -28,7 +28,7 @@ data class AnswerInlineQuery( val switchPmParameter: String? = null ): SimpleRequest { override fun method(): String = "answerInlineQuery" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } fun InlineQuery.createAnswer( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt index b1b38da42b..d461c9a564 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerPreCheckoutQuery.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.serializer interface AnswerPreCheckoutQuery : SimpleRequest { override fun method(): String = "answerPreCheckoutQuery" - override fun resultSerializer(): KSerializer = Boolean.serializer() + override fun resultDeserializer(): KSerializer = Boolean.serializer() val preCheckoutQueryId: PreCheckoutQueryId val isOk: Boolean diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt index 2888ef05a4..1f7ee5a80e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/answers/payments/abstracts/AnswerShippingQuery.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.serializer interface AnswerShippingQuery : SimpleRequest { override fun method(): String = "answerShippingQuery" - override fun resultSerializer(): KSerializer = Boolean.serializer() + override fun resultDeserializer(): KSerializer = Boolean.serializer() val shippingQueryId: ShippingQueryIdentifier val isOk: Boolean diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt index 722ed86f88..ecfd8f91b0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/ExportChatInviteLink.kt @@ -13,5 +13,5 @@ data class ExportChatInviteLink( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "exportChatInviteLink" - override fun resultSerializer(): KSerializer = StringSerializer + override fun resultDeserializer(): KSerializer = StringSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt index f38465e7d7..fdadd6fc8e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/LeaveChat.kt @@ -13,5 +13,5 @@ data class LeaveChat( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "leaveChat" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt index 275b772ff4..0f462ec9cf 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChat.kt @@ -14,5 +14,5 @@ data class GetChat( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "getChat" - override fun resultSerializer(): KSerializer = ExtendedChatSerializer + override fun resultDeserializer(): KSerializer = ExtendedChatSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt index 92f52b1e57..b756d41523 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt @@ -14,5 +14,5 @@ data class GetChatAdministrators( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest> { override fun method(): String = "getChatAdministrators" - override fun resultSerializer(): KSerializer> = ArrayListSerializer(RawChatMember.serializer()) + override fun resultDeserializer(): KSerializer> = ArrayListSerializer(RawChatMember.serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt index 643f138f82..303fd2ca91 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatMembersCount.kt @@ -13,5 +13,5 @@ data class GetChatMembersCount( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "getChatMembersCount" - override fun resultSerializer(): KSerializer = IntSerializer + override fun resultDeserializer(): KSerializer = IntSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt index 6ca8211236..a787b957a2 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt @@ -13,5 +13,5 @@ data class GetChatMember( override val userId: UserId ) : ChatMemberRequest { override fun method(): String = "getChatMember" - override fun resultSerializer(): KSerializer = RawChatMember.serializer() + override fun resultDeserializer(): KSerializer = RawChatMember.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt index 0bd97473a7..fcbd6df4f1 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/KickChatMember.kt @@ -16,5 +16,5 @@ data class KickChatMember( override val untilDate: TelegramDate? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "kickChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt index 57e4fdf090..d741403d14 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/PromoteChatMember.kt @@ -32,5 +32,5 @@ data class PromoteChatMember( private val canPromoteMembers: Boolean? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "promoteChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt index aa879b1ff8..71eac80c5b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt @@ -19,5 +19,5 @@ data class RestrictChatMember( val permissions: ChatPermissions ) : ChatMemberRequest, UntilDate { override fun method(): String = "restrictChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt index 70492e7f8c..ad2280bcff 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/UnbanChatMember.kt @@ -13,5 +13,5 @@ data class UnbanChatMember( override val userId: UserId ) : ChatMemberRequest { override fun method(): String = "unbanChatMember" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt index 92f927d9a7..54216a5dc3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/DeleteChatPhoto.kt @@ -13,5 +13,5 @@ data class DeleteChatPhoto( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "deleteChatPhoto" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt index 8d7067c695..7800bcaf85 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/PinChatMessage.kt @@ -16,5 +16,5 @@ data class PinChatMessage ( override val disableNotification: Boolean = false ): ChatRequest, SimpleRequest, MessageAction, DisableNotification { override fun method(): String = "pinChatMessage" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt index d48e24a90b..a3d2c29ef7 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatDescription.kt @@ -20,5 +20,5 @@ data class SetChatDescription ( } override fun method(): String = "setChatDescription" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt index 3ebe1235b4..7d7e156325 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt @@ -15,5 +15,5 @@ data class SetChatPermissions ( val permissions: ChatPermissions ): ChatRequest, SimpleRequest { override fun method(): String = "setChatPermissions" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } 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 212346bf6d..fd55982656 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 @@ -16,7 +16,7 @@ data class SetChatPhoto ( 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 fun resultDeserializer(): KSerializer = BooleanSerializer override val mediaMap: Map = mapOf(photoField to photo) override val paramsJson: JsonObject = toJson(serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt index 79f2ce0ebb..61e3140015 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatTitle.kt @@ -20,5 +20,5 @@ data class SetChatTitle ( } override fun method(): String = "setChatTitle" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt index 3f362c72fc..8e3cae8855 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/UnpinChatMessage.kt @@ -13,5 +13,5 @@ data class UnpinChatMessage( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "unpinChatMessage" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt index c02109cda6..85eab03063 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/DeleteChatStickerSet.kt @@ -13,5 +13,5 @@ data class DeleteChatStickerSet( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "deleteChatStickerSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt index 3452572914..e3d8b057c0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/stickers/SetChatStickerSet.kt @@ -14,5 +14,5 @@ data class SetChatStickerSet( val stickerSetName: StickerSetName ): ChatRequest, SimpleRequest { override fun method(): String = "setChatStickerSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt index c492115e85..5bea2e5d66 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/EditChatMessageLiveLocation.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -20,5 +21,5 @@ data class EditChatMessageLiveLocation( override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage, EditLocationMessage { override fun method(): String = "editMessageLiveLocation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt index 7780fa347c..bf4a1beae7 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/LiveLocation/StopChatMessageLiveLocation.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditCh import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -17,5 +18,5 @@ data class StopChatMessageLiveLocation( override val replyMarkup: InlineKeyboardMarkup? = null ) : EditChatMessage, EditReplyMessage { override fun method(): String = "stopMessageLiveLocation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt index b8ea63b86a..d0b1a16f0e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/ReplyMarkup/EditChatMessageReplyMarkup.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditCh import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageReplyMarkupMethod = "editMessageReplyMarkup" @@ -20,5 +21,5 @@ data class EditChatMessageReplyMarkup( ) : EditChatMessage, EditReplyMessage { override fun method(): String = editMessageReplyMarkupMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt index 5400523a1d..967f228991 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditChatMessage.kt @@ -2,6 +2,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message -interface EditChatMessage : SimpleRequest, MessageAction +interface EditChatMessage : SimpleRequest, MessageAction diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt index 9efd879fb6..1e59a089c4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/abstracts/EditInlineMessage.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.internal.BooleanSerializer interface EditInlineMessage : SimpleRequest { val inlineMessageId: InlineMessageIdentifier - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt index 2d281bb1e4..554585d623 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/caption/EditChatMessageCaption.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageCaptionMethod = "editMessageCaption" @@ -25,5 +26,5 @@ data class EditChatMessageCaption( ) : EditChatMessage, EditTextChatMessage, EditReplyMessage { override fun method(): String = editMessageCaptionMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt index 4ed80b8de2..a10ca2edd2 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/media/EditChatMessageMedia.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageMediaMethod = "editMessageMedia" @@ -29,5 +30,5 @@ data class EditChatMessageMedia( } override fun method(): String = editMessageMediaMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt index e4d3c12977..4f431d8f61 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/edit/text/EditChatMessageText.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* const val editMessageTextMethod = "editMessageText" @@ -27,5 +28,5 @@ data class EditChatMessageText( ) : EditChatMessage, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage { override fun method(): String = editMessageTextMethod - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt index e0499783eb..9e329e38c6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/GetGameHighScores.kt @@ -10,7 +10,7 @@ interface GetGameHighScores : SimpleRequest> { val userId: UserId override fun method(): String = "getGameHighScores" - override fun resultSerializer(): KSerializer> = GameHighScoresSerializer + override fun resultDeserializer(): KSerializer> = GameHighScoresSerializer } object GameHighScoresSerializer : KSerializer> by ArrayListSerializer(GameHighScore.serializer()) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt index 5ba912b016..f1f42144ef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/games/abstracts/SetGameScore.kt @@ -12,5 +12,5 @@ interface SetGameScore : SimpleRequest { val disableEditMessage: Boolean override fun method(): String = "setGameScore" - override fun resultSerializer(): KSerializer = Boolean.serializer() + override fun resultDeserializer(): KSerializer = Boolean.serializer() } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt index 834cd3a8e9..9ffdc26483 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetFile.kt @@ -12,5 +12,5 @@ data class GetFile( val fileId: FileId ): SimpleRequest { override fun method(): String = "getFile" - override fun resultSerializer(): KSerializer = PathedFile.serializer() + override fun resultDeserializer(): KSerializer = PathedFile.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt index c010d853a7..844808349f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetStickerSet.kt @@ -11,5 +11,5 @@ data class GetStickerSet( val name: String ): SimpleRequest { override fun method(): String = "getStickerSet" - override fun resultSerializer(): KSerializer = StickerSet.serializer() + override fun resultDeserializer(): KSerializer = StickerSet.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt index 6ff1017bb8..85dd7eadc8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/get/GetUserProfilePhotos.kt @@ -23,5 +23,5 @@ data class GetUserProfilePhotos( } override fun method(): String = "getUserProfilePhotos" - override fun resultSerializer(): KSerializer = UserProfilePhotos.serializer() + override fun resultDeserializer(): KSerializer = UserProfilePhotos.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt index 9d4a0bdb00..5559a5245b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendAction.kt @@ -17,5 +17,5 @@ data class SendAction( val action: BotAction ): SendChatMessageRequest { override fun method(): String = "sendChatAction" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt index 8b7ef0f15e..6234bb6ef8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendContact.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -23,8 +24,8 @@ data class SendContact( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest { constructor( chatId: ChatIdentifier, @@ -43,7 +44,7 @@ data class SendContact( ) override fun method(): String = "sendContact" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } fun Contact.toRequest( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt index 75778768d0..a3009dab9e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendLocation.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* // TODO:: Add location tracker for tracking location @@ -23,11 +24,11 @@ data class SendLocation( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest, - PositionedSendMessageRequest +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest, + PositionedSendMessageRequest { override fun method(): String = "sendLocation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt index 02b0e7d10f..72a16fe10b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendMessage.kt @@ -6,7 +6,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -25,9 +26,9 @@ data class SendMessage( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, DisableWebPagePreview { init { @@ -37,5 +38,5 @@ data class SendMessage( } override fun method(): String = "sendMessage" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt index 347a2b7bd9..943c76b60c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendPoll.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -21,8 +22,8 @@ data class SendPoll( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - ReplyingMarkupSendMessageRequest { +) : SendMessageRequest, + ReplyingMarkupSendMessageRequest { init { if (question.length !in pollQuestionTextLength) { @@ -39,5 +40,5 @@ data class SendPoll( } override fun method(): String = "sendPoll" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt index 5c6c38eece..ce714015a4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/SendVenue.kt @@ -3,7 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -26,10 +27,10 @@ data class SendVenue( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, - PositionedSendMessageRequest, - TitledSendMessageRequest, - ReplyingMarkupSendMessageRequest +) : SendMessageRequest, + PositionedSendMessageRequest, + TitledSendMessageRequest, + ReplyingMarkupSendMessageRequest { constructor( chatId: ChatIdentifier, @@ -50,7 +51,7 @@ data class SendVenue( ) override fun method(): String = "sendVenue" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } fun Venue.toRequest( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt index f3cc4c9352..617ade799a 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/games/SendGame.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMar import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -19,8 +20,8 @@ data class SendGame ( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, +) : SendMessageRequest, ReplyMarkup { override fun method(): String = "sendGame" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt index e5d1e4394a..cfa34557e0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAnimation.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -23,7 +24,7 @@ fun SendAnimation( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val animationAsFileId = (animation as? FileId) ?.fileId val animationAsFile = animation as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -77,13 +78,13 @@ data class SendAnimationData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest, - SizedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest, + SizedSendMessageRequest { init { text ?.let { @@ -94,7 +95,7 @@ data class SendAnimationData internal constructor( } override fun method(): String = "sendAnimation" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendAnimationFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt index c6317f0c00..c4d808e778 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendAudio.kt @@ -8,7 +8,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -24,7 +25,7 @@ fun SendAudio( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val audioAsFileId = (audio as? FileId) ?.fileId val audioAsFile = audio as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -78,13 +79,13 @@ data class SendAudioData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - TitledSendMessageRequest, - DuratedSendMessageRequest, +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + TitledSendMessageRequest, + DuratedSendMessageRequest, Performerable { init { @@ -96,7 +97,7 @@ data class SendAudioData internal constructor( } override fun method(): String = "sendAudio" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendAudioFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt index f3cc73279b..72143c7735 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendDocument.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -20,7 +21,7 @@ fun SendDocument( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val documentAsFileId = (document as? FileId) ?.fileId val documentAsFile = document as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -65,11 +66,11 @@ data class SendDocumentData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest { init { text ?.let { @@ -80,7 +81,7 @@ data class SendDocumentData internal constructor( } override fun method(): String = "sendDocument" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendDocumentFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt index 921afb4f8c..1755917ada 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt @@ -6,7 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMe import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.* -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer @@ -19,7 +19,7 @@ fun SendMediaGroup( media: List, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null -): Request> { +): Request> { if (media.size !in membersCountInMediaGroup) { throw IllegalArgumentException("Count of members for media group must be in $membersCountInMediaGroup range") } @@ -52,7 +52,7 @@ fun SendMediaGroup( } } -private val serializer = ArrayListSerializer(RawMessage.serializer()) +private val serializer = ArrayListSerializer(TelegramBotAPIMessageDeserializeOnlySerializer) @Serializable data class SendMediaGroupData internal constructor( @@ -63,8 +63,8 @@ data class SendMediaGroupData internal constructor( override val disableNotification: Boolean = false, @SerialName(replyToMessageIdField) override val replyToMessageId: MessageIdentifier? = null -) : DataRequest>, - SendMessageRequest> +) : DataRequest>, + SendMessageRequest> { @SerialName(mediaField) private val convertedMedia: String @@ -76,7 +76,7 @@ data class SendMediaGroupData internal constructor( override fun method(): String = "sendMediaGroup" - override fun resultSerializer(): KSerializer> = serializer + override fun resultDeserializer(): DeserializationStrategy> = serializer } data class SendMediaGroupFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt index 78b418a0c7..15403b4730 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendPhoto.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import kotlinx.serialization.* fun SendPhoto( @@ -18,7 +19,7 @@ fun SendPhoto( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val data = SendPhotoData( chatId, (photo as? FileId) ?.fileId, @@ -52,10 +53,10 @@ data class SendPhotoData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest { init { text ?.let { @@ -66,7 +67,7 @@ data class SendPhotoData internal constructor( } override fun method(): String = "sendPhoto" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendPhotoFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt index e9d16beb8b..b1add1b9cc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendSticker.kt @@ -5,7 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.Replyi import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.json.JsonObject @@ -16,7 +17,7 @@ fun SendSticker( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request = SendStickerByFileId( +): Request = SendStickerByFileId( chatId, sticker as? FileId, disableNotification, @@ -41,16 +42,16 @@ data class SendStickerByFileId internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : SendMessageRequest, ReplyingMarkupSendMessageRequest { +) : SendMessageRequest, ReplyingMarkupSendMessageRequest { override fun method(): String = "sendSticker" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendStickerByFile internal constructor( @Transient private val sendStickerByFileId: SendStickerByFileId, val sticker: MultipartFile -) : MultipartRequest, Request by sendStickerByFileId { +) : MultipartRequest, Request by sendStickerByFileId { override val mediaMap: Map = mapOf(stickerField to sticker) override val paramsJson: JsonObject = sendStickerByFileId.toJsonWithoutNulls(SendStickerByFileId.serializer()) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt index 03c69b4d39..23e803c1af 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideo.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -24,7 +25,7 @@ fun SendVideo( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val videoAsFileId = (video as? FileId) ?.fileId val videoAsFile = video as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -81,13 +82,13 @@ data class SendVideoData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest, - SizedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest, + SizedSendMessageRequest { init { text ?.let { @@ -98,7 +99,7 @@ data class SendVideoData internal constructor( } override fun method(): String = "sendVideo" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendVideoFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt index 88de4f17a0..92d8dbcc05 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVideoNote.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -22,7 +23,7 @@ fun SendVideoNote( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val videoNoteAsFileId = (videoNote as? FileId) ?.fileId val videoNoteAsFile = videoNote as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -73,13 +74,13 @@ data class SendVideoNoteData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest, - SizedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest, + SizedSendMessageRequest { @Transient override val height: Int? @@ -94,7 +95,7 @@ data class SendVideoNoteData internal constructor( } override fun method(): String = "sendVideoNote" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendVideoNoteFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt index c167b8ed3d..ebc1425dda 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendVoice.kt @@ -7,7 +7,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.utils.mapOfNotNull import kotlinx.serialization.* @@ -21,7 +22,7 @@ fun SendVoice( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null -): Request { +): Request { val voiceAsFileId = (voice as? FileId) ?.fileId val voiceAsFile = voice as? MultipartFile val thumbAsFileId = (thumb as? FileId) ?.fileId @@ -69,12 +70,12 @@ data class SendVoiceData internal constructor( override val replyToMessageId: MessageIdentifier? = null, @SerialName(replyMarkupField) override val replyMarkup: KeyboardMarkup? = null -) : DataRequest, - SendMessageRequest, - ReplyingMarkupSendMessageRequest, - TextableSendMessageRequest, - ThumbedSendMessageRequest, - DuratedSendMessageRequest +) : DataRequest, + SendMessageRequest, + ReplyingMarkupSendMessageRequest, + TextableSendMessageRequest, + ThumbedSendMessageRequest, + DuratedSendMessageRequest { init { text ?.let { @@ -85,7 +86,7 @@ data class SendVoiceData internal constructor( } override fun method(): String = "sendVoice" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy } data class SendVoiceFiles internal constructor( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt index c00917c99a..55a694dcc3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt @@ -2,6 +2,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartRequest +import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.KSerializer import kotlinx.serialization.json.JsonObject @@ -13,7 +14,7 @@ class MultipartRequestImpl, F: Files, R: Any>( val files: F ) : MultipartRequest { override fun method(): String = data.method() - override fun resultSerializer(): KSerializer = data.resultSerializer() + override fun resultDeserializer(): DeserializationStrategy = data.resultDeserializer() override val paramsJson: JsonObject = data.json() override val mediaMap: Map = files } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt index 9dc46a4ffa..d41499b200 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/payments/SendInvoice.kt @@ -4,7 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.* import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategy import com.github.insanusmokrassar.TelegramBotAPI.types.payments.LabeledPrice import com.github.insanusmokrassar.TelegramBotAPI.types.payments.LabeledPricesSerializer import com.github.insanusmokrassar.TelegramBotAPI.types.payments.abstracts.* @@ -62,9 +63,9 @@ data class SendInvoice( DisableNotification, ReplyMessageId, ReplyMarkup, - SendMessageRequest { + SendMessageRequest { override fun method(): String = "sendInvoice" - override fun resultSerializer(): KSerializer = RawMessage.serializer() + override fun resultDeserializer(): DeserializationStrategy = TelegramBotAPIMessageDeserializationStrategy @SerialName(photoUrlField) var photoUrl: String? = null diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt index 8f64e743b2..00048ba963 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/DeleteStickerFromSet.kt @@ -12,5 +12,5 @@ data class DeleteStickerFromSet( val sticker: FileId ) : SimpleRequest { override fun method(): String = "deleteStickerFromSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt index 0e97d18b6b..f8ef9bd32e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/SetStickerPositionInSet.kt @@ -21,5 +21,5 @@ data class SetStickerPositionInSet( } override fun method(): String = "setStickerPositionInSet" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt index 8267d8f809..7bdc656e03 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/UploadStickerFile.kt @@ -24,5 +24,5 @@ data class UploadStickerFile( override val mediaMap: Map = mapOf(pngStickerField to sticker) @Transient override val paramsJson: JsonObject = toJsonWithoutNulls(serializer()) - override fun resultSerializer(): KSerializer = File.serializer() + override fun resultDeserializer(): KSerializer = File.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt index d53110b07e..0f10097952 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/stickers/abstracts/StickerSetAction.kt @@ -12,5 +12,5 @@ interface StickerSetAction : SimpleRequest { val emojis: String // must be more than one val maskPosition: MaskPosition? - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt index 2260816fe1..d0e3b8a9b7 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/DeleteWebhook.kt @@ -9,5 +9,5 @@ import kotlinx.serialization.internal.BooleanSerializer class DeleteWebhook : SimpleRequest { override fun method(): String = "deleteWebhook" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt index 27b686964a..d3f82ab3d6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/GetWebhookInfo.kt @@ -9,5 +9,5 @@ import kotlinx.serialization.Serializable class GetWebhookInfo : SimpleRequest { override fun method(): String = "getWebhookInfo" - override fun resultSerializer(): KSerializer = WebhookInfo.serializer() + override fun resultDeserializer(): KSerializer = WebhookInfo.serializer() } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt index bae1ad4a4c..120384c211 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/webhook/SetWebhook.kt @@ -51,7 +51,7 @@ data class SetWebhook internal constructor( val allowedUpdates: List? = null ) : DataRequest { override fun method(): String = "setWebhook" - override fun resultSerializer(): KSerializer = BooleanSerializer + override fun resultDeserializer(): KSerializer = BooleanSerializer init { maxAllowedConnections ?.let { diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt index fc84587435..d95a26e80b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt @@ -2,6 +2,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.* @Serializable @@ -10,7 +12,8 @@ data class RawCallbackQuery( val id: CallbackQueryIdentifier, @SerialName(fromField) val from: User, - val message: RawMessage? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + val message: Message? = null, @SerialName(inlineMessageIdField) val inlineMessageId: InlineMessageIdentifier? = null, @SerialName("chat_instance") @@ -22,8 +25,8 @@ data class RawCallbackQuery( @Transient val asCallbackQuery: CallbackQuery by lazy { when { - message != null && data != null -> MessageDataCallbackQuery(id, from, chatInstance, message.asMessage, data) - message != null && gameShortName != null -> MessageGameShortNameCallbackQuery(id, from, chatInstance, message.asMessage, gameShortName) + message != null && data != null -> MessageDataCallbackQuery(id, from, chatInstance, message, data) + message != null && gameShortName != null -> MessageGameShortNameCallbackQuery(id, from, chatInstance, message, gameShortName) inlineMessageId != null && data != null -> InlineMessageIdDataCallbackQuery(id, from, chatInstance, inlineMessageId, data) inlineMessageId != null && gameShortName != null -> InlineMessageIdGameShortNameCallbackQuery(id, from, chatInstance, inlineMessageId, gameShortName) else -> throw IllegalStateException("Strange answer from server, can't create callback query") diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt index c5093b3997..6a5bfa4c62 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Response.kt @@ -2,19 +2,14 @@ package com.github.insanusmokrassar.TelegramBotAPI.types import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable - -@Deprecated( - "Deprecated because incorrect name", - ReplaceWith("Response") -) -typealias ResponseParameters = Response +import kotlinx.serialization.json.JsonElement @Serializable -data class Response( +data class Response( val ok: Boolean = false, val description: String? = null, @SerialName("error_code") val errorCode: Int? = null, - val result: T? = null, + val result: JsonElement? = null, val parameters: ResponseParametersRaw? = null ) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt index 5f10a77528..d42cce3d2b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt @@ -2,9 +2,13 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PublicChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer +import kotlinx.serialization.Serializable interface ExtendedPublicChat : ExtendedChat, PublicChat { val description: String val inviteLink: String? - val pinnedMessage: RawMessage? + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + val pinnedMessage: Message? } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt index d1fa0dd594..ee5034e18f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt @@ -3,6 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.extended import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedChannelChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -21,5 +23,6 @@ data class ExtendedChannelChatImpl( @SerialName(inviteLinkField) override val inviteLink: String? = null, @SerialName(pinnedMessageField) - override val pinnedMessage: RawMessage? = null + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null ) : ExtendedChannelChat diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt index 2eb20fc6ca..5a22610531 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt @@ -4,6 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedGroupChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -22,5 +24,6 @@ data class ExtendedGroupChatImpl( @SerialName(inviteLinkField) override val inviteLink: String? = null, @SerialName(pinnedMessageField) - override val pinnedMessage: RawMessage? = null + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null ) : ExtendedGroupChat diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt index 1e352548b2..b87d2e4868 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt @@ -4,6 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedSupergroupChat import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -24,7 +26,8 @@ data class ExtendedSupergroupChatImpl( @SerialName(inviteLinkField) override val inviteLink: String? = null, @SerialName(pinnedMessageField) - override val pinnedMessage: RawMessage? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + override val pinnedMessage: Message? = null, @SerialName(stickerSetNameFullField) override val stickerSetName: StickerSetName? = null, @SerialName(canSetStickerSetField) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt index c2b8e36704..16be55b091 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt @@ -24,7 +24,7 @@ import kotlin.reflect.KClass // TODO:: add PassportData type @Serializable -data class RawMessage( +internal data class RawMessage( @SerialName(messageIdField) val messageId: MessageIdentifier, @SerialName(dateField) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt index 602afa1aac..9c500b31cd 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt @@ -2,10 +2,35 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.Chat +import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor import org.joda.time.DateTime interface Message { val messageId: MessageIdentifier val chat: Chat val date: DateTime -} \ No newline at end of file +} + +object TelegramBotAPIMessageDeserializationStrategy : DeserializationStrategy { + override val descriptor: SerialDescriptor = StringDescriptor.withName("TelegramBotAPIMessageSerializer") + + override fun patch(decoder: Decoder, old: Message): Message = throw UpdateNotSupportedException(descriptor.name) + override fun deserialize(decoder: Decoder): Message { + return RawMessage.serializer().deserialize(decoder).asMessage + } +} + +object TelegramBotAPIMessageDeserializeOnlySerializer : KSerializer { + override val descriptor: SerialDescriptor + get() = TelegramBotAPIMessageDeserializationStrategy.descriptor + + override fun deserialize(decoder: Decoder): Message { + return TelegramBotAPIMessageDeserializationStrategy.deserialize(decoder) + } + + override fun serialize(encoder: Encoder, obj: Message) { + throw IllegalStateException("Currently, Message objects can't be serialized y this serializer") + } +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt index a5cca887cf..64cdea6bd0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/ContactContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendContact import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class ContactContent( @@ -15,7 +15,7 @@ data class ContactContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendContact( + ): Request = SendContact( chatId, contact, disableNotification, replyToMessageId, replyMarkup ) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt index bbafa16285..257cd648e0 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/GameContent.kt @@ -6,7 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.games.Game -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class GameContent( @@ -17,7 +17,7 @@ data class GameContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendGame( + ): Request = SendGame( chatId, game.title, disableNotification, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt index 8c3c20d7b2..89ba7c4aab 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/LocationContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendLocation import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class LocationContent( @@ -15,7 +15,7 @@ data class LocationContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendLocation( + ): Request = SendLocation( chatId, location.latitude, location.longitude, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt index e6eef2fdff..1b27e1278e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/PollContent.kt @@ -5,7 +5,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendPoll import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent import com.github.insanusmokrassar.TelegramBotAPI.types.polls.Poll @@ -17,7 +17,7 @@ data class PollContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendPoll( + ): Request = SendPoll( chatId, poll.question, poll.options.map { it.text }, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt index 1676614d7c..0dfa2f56f4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/TextContent.kt @@ -7,7 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEnt import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlTexts import com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownTexts @@ -21,7 +21,7 @@ data class TextContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendMessage( + ): Request = SendMessage( chatId, toHtmlTexts().first(), HTMLParseMode, @@ -36,7 +36,7 @@ data class TextContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): List> = createResends( + ): List> = createResends( chatId, disableNotification, replyToMessageId, @@ -50,7 +50,7 @@ data class TextContent( replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup?, parseMode: ParseMode = HTMLParseMode - ): List> = when (parseMode) { + ): List> = when (parseMode) { is MarkdownParseMode -> toMarkdownTexts() is HTMLParseMode -> toHtmlTexts() }.map { diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt index 871b75ff71..671937ebef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/VenueContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.send.SendVenue import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent data class VenueContent( @@ -15,7 +15,7 @@ data class VenueContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVenue( + ): Request = SendVenue( chatId, venue, disableNotification, replyToMessageId, replyMarkup ) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt index 2d53a39568..69fd38aa35 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/abstracts/ResendableContent.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message interface ResendableContent { fun createResend( @@ -12,12 +12,12 @@ interface ResendableContent { disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null - ): Request + ): Request fun createResends( chatId: ChatIdentifier, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null - ): List> = listOf(createResend(chatId, disableNotification, replyToMessageId, replyMarkup)) + ): List> = listOf(createResend(chatId, disableNotification, replyToMessageId, replyMarkup)) } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt index c4934231fc..5548b804b4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt @@ -11,7 +11,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AnimationFile import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -26,22 +26,12 @@ data class AnimationContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = createResend(chatId, toHtmlCaptions().firstOrNull(), HTMLParseMode, disableNotification, replyToMessageId, replyMarkup) - - @Deprecated("Will be fully replaced by default method") - fun createResend( - chatId: ChatIdentifier, - caption: String?, - parseMode: ParseMode? = null, - disableNotification: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - replyMarkup: KeyboardMarkup? = null - ): Request = SendAnimation( + ): Request = SendAnimation( chatId, media.fileId, media.thumb ?.fileId, - caption, - parseMode, + toHtmlCaptions().firstOrNull(), + HTMLParseMode, media.duration, media.width, media.height, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt index 778498771c..346826b0b1 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AudioContent.kt @@ -9,7 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AudioFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -23,7 +23,7 @@ data class AudioContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendAudio( + ): Request = SendAudio( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt index dba87ea226..2b6b31cb8b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/DocumentContent.kt @@ -9,7 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -23,7 +23,7 @@ data class DocumentContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendDocument( + ): Request = SendDocument( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt index c0589cb9d7..d358b88ebe 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/PhotoContent.kt @@ -11,7 +11,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize import com.github.insanusmokrassar.TelegramBotAPI.types.files.biggest -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaCollectionContent import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaGroupContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -28,7 +28,7 @@ data class PhotoContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendPhoto( + ): Request = SendPhoto( chatId, media.fileId, toHtmlCaptions().firstOrNull(), diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt index 70d87d4fec..9fccfee65f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/StickerContent.kt @@ -6,7 +6,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.Sticker -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent data class StickerContent( @@ -17,7 +17,7 @@ data class StickerContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendSticker( + ): Request = SendSticker( chatId, media.fileId, disableNotification, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt index 2de7f425ba..718845cafb 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoContent.kt @@ -10,7 +10,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VideoFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaGroupContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -24,7 +24,7 @@ data class VideoContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVideo( + ): Request = SendVideo( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt index 7a52e92e08..422b9b0910 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VideoNoteContent.kt @@ -7,7 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VideoNoteFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent data class VideoNoteContent( @@ -18,7 +18,7 @@ data class VideoNoteContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = createResend(chatId, null, null, disableNotification, replyToMessageId, replyMarkup) + ): Request = createResend(chatId, null, null, disableNotification, replyToMessageId, replyMarkup) fun createResend( chatId: ChatIdentifier, @@ -27,7 +27,7 @@ data class VideoNoteContent( disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null - ): Request = SendVideoNote( + ): Request = SendVideoNote( chatId, media.fileId, media.thumb ?.fileId, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt index e29db55dee..63c07dbb5c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/VoiceContent.kt @@ -9,7 +9,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.VoiceFile -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MediaContent import com.github.insanusmokrassar.TelegramBotAPI.utils.toHtmlCaptions @@ -23,7 +23,7 @@ data class VoiceContent( disableNotification: Boolean, replyToMessageId: MessageIdentifier?, replyMarkup: KeyboardMarkup? - ): Request = SendVoice( + ): Request = SendVoice( chatId, media.fileId, null, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt index 1e5c541bb7..9299cbce03 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt @@ -5,6 +5,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.ChosenInli import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.query.RawInlineQuery import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import com.github.insanusmokrassar.TelegramBotAPI.types.payments.PreCheckoutQuery import com.github.insanusmokrassar.TelegramBotAPI.types.payments.ShippingQuery import com.github.insanusmokrassar.TelegramBotAPI.types.polls.Poll @@ -18,10 +20,14 @@ import kotlinx.serialization.* data class RawUpdate constructor( @SerialName(updateIdField) val updateId: UpdateIdentifier, - private val edited_message: RawMessage? = null, - private val message: RawMessage? = null, - private val edited_channel_post: RawMessage? = null, - private val channel_post: RawMessage? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val edited_message: Message? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val message: Message? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val edited_channel_post: Message? = null, + @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) + private val channel_post: Message? = null, private val inline_query: RawInlineQuery? = null, private val chosen_inline_result: RawChosenInlineResult? = null, private val callback_query: RawCallbackQuery? = null, @@ -32,10 +38,10 @@ data class RawUpdate constructor( @Transient val asUpdate: Update by lazy { when { - edited_message != null -> EditMessageUpdate(updateId, edited_message.asMessage) - message != null -> MessageUpdate(updateId, message.asMessage) - edited_channel_post != null -> EditChannelPostUpdate(updateId, edited_channel_post.asMessage) - channel_post != null -> ChannelPostUpdate(updateId, channel_post.asMessage) + edited_message != null -> EditMessageUpdate(updateId, edited_message) + message != null -> MessageUpdate(updateId, message) + edited_channel_post != null -> EditChannelPostUpdate(updateId, edited_channel_post) + channel_post != null -> ChannelPostUpdate(updateId, channel_post) chosen_inline_result != null -> ChosenInlineResultUpdate(updateId, chosen_inline_result.asChosenInlineResult) inline_query != null -> InlineQueryUpdate(updateId, inline_query.asInlineQuery) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt index eb8b2f2679..ebb3f462ae 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/Executes.kt @@ -9,7 +9,7 @@ import kotlinx.coroutines.* fun RequestsExecutor.executeAsync( request: Request, - onFail: (suspend (Response<*>) -> Unit)? = null, + onFail: (suspend (Response) -> Unit)? = null, scope: CoroutineScope = GlobalScope, onSuccess: (suspend (T) -> Unit)? = null ): Job { From c7a8bc5c9d3fb07ae0393e6fcf087f7a73be75a2 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 11:53:19 +0600 Subject: [PATCH 03/18] update description --- CHANGELOG.md | 1 + README.md | 4 ++-- gradle.properties | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac971f5ff4..88a2894aba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * `TelegramBotAPIMessageDeserializationStrategy` was created. It was used for deserialization of Telegram Bot API incoming messages * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages +* Update of description ## 0.17.0 diff --git a/README.md b/README.md index 942cb41219..8d4841f020 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ ## What is it? -It is one more project which wish to be useful and full Telegram Bots API bridge for Kotlin. Most part of some specific -solves or unuseful moments are describing by official [Telegram Bot API](https://core.telegram.org/bots/api). +Library for Object-Oriented and type-safe work with Telegram Bot API. Most part of some specific solves or unuseful +moments are describing by official [Telegram Bot API](https://core.telegram.org/bots/api). ## Compatibility diff --git a/gradle.properties b/gradle.properties index ad7dad97da..eee4a31201 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,6 +8,6 @@ ktor_version=1.2.3 gradle_bintray_plugin_version=1.8.4 project_public_name=Telegram Bot API -project_public_description=It is one more project which wish to be useful and full Telegram Bots API bridge for Kotlin +project_public_description=Library for Object-Oriented and type-safe work with Telegram Bot API disableImplicitReflectionSerializerAnnotation=-Xexperimental=kotlinx.serialization.ImplicitReflectionSerializer From 617bccaa812a4823dd19f352b775ea158d0eb2c8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:08:36 +0600 Subject: [PATCH 04/18] RawUpdate is internal --- CHANGELOG.md | 1 + .../TelegramBotAPI/requests/GetUpdates.kt | 8 +++++-- .../TelegramBotAPI/types/update/RawUpdate.kt | 4 +--- .../types/update/abstracts/Update.kt | 21 +++++++++++++++++++ .../updateshandlers/KtorUpdatesPoller.kt | 4 +--- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88a2894aba..f7466bc054 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ incoming messages * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages * Update of description +* `RawUpdate` not is internal and not available outside of library ## 0.17.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt index a79db0d088..06ce78b2ac 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt @@ -4,6 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleReque import com.github.insanusmokrassar.TelegramBotAPI.types.ALL_UPDATES_LIST import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.update.RawUpdate +import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.Update +import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.UpdateSerializerWithoutDeserialization import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.internal.ArrayListSerializer @@ -35,8 +37,10 @@ data class GetUpdates( val limit: Int? = null, val timeout: Int? = null, val allowed_updates: List? = ALL_UPDATES_LIST -): SimpleRequest> { +): SimpleRequest> { override fun method(): String = "getUpdates" - override fun resultDeserializer(): KSerializer> = ArrayListSerializer(RawUpdate.serializer()) + override fun resultDeserializer(): KSerializer> = ArrayListSerializer( + UpdateSerializerWithoutDeserialization + ) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt index 9299cbce03..6d237db6d6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt @@ -14,10 +14,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.Update import com.github.insanusmokrassar.TelegramBotAPI.types.updateIdField import kotlinx.serialization.* -// TODO:: add ShippingQuery type -// TODO:: add PreCheckoutQuery type @Serializable -data class RawUpdate constructor( +internal data class RawUpdate constructor( @SerialName(updateIdField) val updateId: UpdateIdentifier, @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt index dacc8176ab..7bb89c0ffb 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt @@ -1,8 +1,29 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier +import com.github.insanusmokrassar.TelegramBotAPI.types.update.RawUpdate +import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor interface Update { val updateId: UpdateIdentifier val data: Any } + +object UpdateSerializerWithoutDeserialization : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName("UpdateSerializerWithoutDeserialization") + + override fun deserialize(decoder: Decoder): Update = UpdateDeserializationStrategy.deserialize(decoder) + + override fun serialize(encoder: Encoder, obj: Update) = throw UnsupportedOperationException() +} + +object UpdateDeserializationStrategy : DeserializationStrategy { + override val descriptor: SerialDescriptor = StringDescriptor.withName("UpdateDeserializationStrategy") + + override fun patch(decoder: Decoder, old: Update): Update = throw UpdateNotSupportedException(descriptor.name) + + override fun deserialize(decoder: Decoder): Update { + return RawUpdate.serializer().deserialize(decoder).asUpdate + } +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesPoller.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesPoller.kt index 2f670113d5..941773383d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesPoller.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/KtorUpdatesPoller.kt @@ -109,9 +109,7 @@ class KtorUpdatesPoller( timeoutSeconds, allowedUpdates ) - ).map { - it.asUpdate - } + ) } private suspend fun handleUpdates(updates: List) { From 41c5ba7309f58e01539871c161432af9f044d528 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:26:02 +0600 Subject: [PATCH 05/18] RawChatMember is internal --- CHANGELOG.md | 3 ++- .../chat/get/GetChatAdministrators.kt | 8 ++++++-- .../requests/chat/members/GetChatMember.kt | 6 ++++-- .../types/ChatMember/RawChatMember.kt | 2 +- .../types/ChatMember/abstracts/ChatMember.kt | 19 ++++++++++++++++++- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7466bc054..cd15a12aba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ incoming messages * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages * Update of description -* `RawUpdate` not is internal and not available outside of library +* `RawUpdate` now is internal and not available outside of library +* `RawChatMember` now is internal and not available outside of library ## 0.17.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt index b756d41523..9d5c53722f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt @@ -4,6 +4,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMemberSerializerWithoutDeserialization import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer @@ -12,7 +14,9 @@ import kotlinx.serialization.internal.ArrayListSerializer data class GetChatAdministrators( @SerialName(chatIdField) override val chatId: ChatIdentifier -): ChatRequest, SimpleRequest> { +): ChatRequest, SimpleRequest> { override fun method(): String = "getChatAdministrators" - override fun resultDeserializer(): KSerializer> = ArrayListSerializer(RawChatMember.serializer()) + override fun resultDeserializer(): KSerializer> = ArrayListSerializer( + ChatMemberSerializerWithoutDeserialization + ) } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt index a787b957a2..6b6d69910d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt @@ -3,6 +3,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMemberDeserializationStrategy import kotlinx.serialization.* @Serializable @@ -11,7 +13,7 @@ data class GetChatMember( override val chatId: ChatIdentifier, @SerialName(userIdField) override val userId: UserId -) : ChatMemberRequest { +) : ChatMemberRequest { override fun method(): String = "getChatMember" - override fun resultDeserializer(): KSerializer = RawChatMember.serializer() + override fun resultDeserializer(): DeserializationStrategy = ChatMemberDeserializationStrategy } diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt index 85e730212d..ea95fca153 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt @@ -5,7 +5,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.Cha import kotlinx.serialization.* @Serializable -data class RawChatMember( +internal data class RawChatMember( val user: User, private val status: String, private val until_date: TelegramDate? = null, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt index 2d6c0b4f41..aa5e457519 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt @@ -1,7 +1,24 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.User +import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor interface ChatMember { val user: User -} \ No newline at end of file +} + +internal object ChatMemberSerializerWithoutDeserialization : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberSerializerWithoutDeserialization") + + override fun deserialize(decoder: Decoder): ChatMember = ChatMemberDeserializationStrategy.deserialize(decoder) + override fun serialize(encoder: Encoder, obj: ChatMember) = throw UnsupportedOperationException() +} + +internal object ChatMemberDeserializationStrategy : DeserializationStrategy { + override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberDeserializationStrategy") + + override fun deserialize(decoder: Decoder): ChatMember = RawChatMember.serializer().deserialize(decoder).asChatMember + override fun patch(decoder: Decoder, old: ChatMember): ChatMember = throw UpdateNotSupportedException(descriptor.name) +} From 402e1b12dc24d4259c28fb31fc0364254bdd5612 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:29:42 +0600 Subject: [PATCH 06/18] current raw tools are internal --- .../TelegramBotAPI/requests/GetUpdates.kt | 21 ------------------- .../types/message/abstracts/Message.kt | 4 ++-- .../types/update/abstracts/Update.kt | 4 ++-- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt index 06ce78b2ac..d2e1193178 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt @@ -10,27 +10,6 @@ import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.internal.ArrayListSerializer -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_MESSAGE", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_MESSAGE")) -const val UPDATE_MESSAGE = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_MESSAGE -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_EDITED_MESSAGE", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_MESSAGE")) -const val UPDATE_EDITED_MESSAGE = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_MESSAGE -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_CHANNEL_POST", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHANNEL_POST")) -const val UPDATE_CHANNEL_POST = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHANNEL_POST -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_EDITED_CHANNEL_POST", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_CHANNEL_POST")) -const val UPDATE_EDITED_CHANNEL_POST = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_CHANNEL_POST -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_CHOSEN_INLINE_RESULT", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHOSEN_INLINE_RESULT")) -const val UPDATE_CHOSEN_INLINE_RESULT = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHOSEN_INLINE_RESULT -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_INLINE_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_INLINE_QUERY")) -const val UPDATE_INLINE_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_INLINE_QUERY -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_CALLBACK_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CALLBACK_QUERY")) -const val UPDATE_CALLBACK_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CALLBACK_QUERY -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_SHIPPING_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_SHIPPING_QUERY")) -const val UPDATE_SHIPPING_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_SHIPPING_QUERY -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_PRE_CHECKOUT_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_PRE_CHECKOUT_QUERY")) -const val UPDATE_PRE_CHECKOUT_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_PRE_CHECKOUT_QUERY -@Deprecated("Replaced to other package", ReplaceWith("UPDATE_POLL", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_POLL")) -const val UPDATE_POLL = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_POLL - @Serializable data class GetUpdates( val offset: UpdateIdentifier? = null,// set `last update id + 1` to receive next part of updates diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt index 9c500b31cd..ac99fbbce8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt @@ -13,7 +13,7 @@ interface Message { val date: DateTime } -object TelegramBotAPIMessageDeserializationStrategy : DeserializationStrategy { +internal object TelegramBotAPIMessageDeserializationStrategy : DeserializationStrategy { override val descriptor: SerialDescriptor = StringDescriptor.withName("TelegramBotAPIMessageSerializer") override fun patch(decoder: Decoder, old: Message): Message = throw UpdateNotSupportedException(descriptor.name) @@ -22,7 +22,7 @@ object TelegramBotAPIMessageDeserializationStrategy : DeserializationStrategy { +internal object TelegramBotAPIMessageDeserializeOnlySerializer : KSerializer { override val descriptor: SerialDescriptor get() = TelegramBotAPIMessageDeserializationStrategy.descriptor diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt index 7bb89c0ffb..46f998d759 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/abstracts/Update.kt @@ -10,7 +10,7 @@ interface Update { val data: Any } -object UpdateSerializerWithoutDeserialization : KSerializer { +internal object UpdateSerializerWithoutDeserialization : KSerializer { override val descriptor: SerialDescriptor = StringDescriptor.withName("UpdateSerializerWithoutDeserialization") override fun deserialize(decoder: Decoder): Update = UpdateDeserializationStrategy.deserialize(decoder) @@ -18,7 +18,7 @@ object UpdateSerializerWithoutDeserialization : KSerializer { override fun serialize(encoder: Encoder, obj: Update) = throw UnsupportedOperationException() } -object UpdateDeserializationStrategy : DeserializationStrategy { +internal object UpdateDeserializationStrategy : DeserializationStrategy { override val descriptor: SerialDescriptor = StringDescriptor.withName("UpdateDeserializationStrategy") override fun patch(decoder: Decoder, old: Update): Update = throw UpdateNotSupportedException(descriptor.name) From 3285b2812e23fceaa270e89cc878e5d299ab909c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:48:18 +0600 Subject: [PATCH 07/18] RawMessageEntity is internal --- CHANGELOG.md | 2 ++ .../types/MessageEntity/RawMessageEntity.kt | 6 ++-- .../TelegramBotAPI/types/games/Game.kt | 35 ++++++++++++++----- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd15a12aba..bd6b0586b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ * Update of description * `RawUpdate` now is internal and not available outside of library * `RawChatMember` now is internal and not available outside of library +* Make `Game` object a little bit more standartizated +* `RawMessageEntity` now is internal ## 0.17.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/RawMessageEntity.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/RawMessageEntity.kt index be32fee1bb..489531935c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/RawMessageEntity.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/RawMessageEntity.kt @@ -6,7 +6,7 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.internal.ArrayListSerializer @Serializable -data class RawMessageEntity( +internal data class RawMessageEntity( val type: String, val offset: Int, val length: Int, @@ -34,8 +34,8 @@ data class RawMessageEntity( } } -typealias RawMessageEntities = List +internal typealias RawMessageEntities = List -object RawMessageEntitiesSerializer : KSerializer> by ArrayListSerializer( +internal object RawMessageEntitiesSerializer : KSerializer> by ArrayListSerializer( RawMessageEntity.serializer() ) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt index c531d0e3c3..bab1244719 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt @@ -1,31 +1,48 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.games +import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.* import com.github.insanusmokrassar.TelegramBotAPI.types.files.* import kotlinx.serialization.* @Serializable -data class Game( +data class Game internal constructor( @SerialName(titleField) - val title: String, + override val title: String, @SerialName(descriptionField) val description: String, @Serializable(PhotoSerializer::class) @SerialName(photoField) val photo: Photo, @SerialName(textField) - val text: String? = null, + override val caption: String? = null, @Serializable(RawMessageEntitiesSerializer::class) @SerialName(textEntitiesField) - private val textEntitiesRaw: RawMessageEntities? = null, + private val rawEntities: RawMessageEntities? = null, @SerialName(animationField) val animation: AnimationFile? = null -) { +) : Titled, CaptionedInput { @Transient - val textEntities: List? = text ?.let { - textEntitiesRaw ?.map { - it.asMessageEntity(text) + override val captionEntities: List = caption ?.let { + rawEntities ?.map { + it.asMessageEntity(caption) } - } + } ?: emptyList() + + @Deprecated( + "Missinterfaced field", + ReplaceWith("caption") + ) + @Transient + val text: String? + get() = caption + + @Deprecated( + "Missinterfaced field", + ReplaceWith("captionEntities") + ) + @Transient + val textEntities: List? + get() = captionEntities } From e7af08142bb13c417295aa7b8485999790540b8e Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:49:37 +0600 Subject: [PATCH 08/18] RawInlineQuery is internal --- CHANGELOG.md | 1 + .../TelegramBotAPI/types/InlineQueries/query/RawInlineQuery.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd6b0586b7..85a98c836d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * `RawChatMember` now is internal and not available outside of library * Make `Game` object a little bit more standartizated * `RawMessageEntity` now is internal +* `RawInlineQuery` now is internal ## 0.17.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/query/RawInlineQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/query/RawInlineQuery.kt index 425f7dc5f0..b8e711248e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/query/RawInlineQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/query/RawInlineQuery.kt @@ -4,7 +4,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import kotlinx.serialization.* @Serializable -data class RawInlineQuery( +internal data class RawInlineQuery( @SerialName(idField) val id: InlineQueryIdentifier, @SerialName(fromField) From 0312c57741172debbe155f6ea468e6aa6f9fb42d Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:50:52 +0600 Subject: [PATCH 09/18] RawCallbackQuery is internal --- CHANGELOG.md | 1 + .../TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85a98c836d..054e415d04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Make `Game` object a little bit more standartizated * `RawMessageEntity` now is internal * `RawInlineQuery` now is internal +* `RawCallbackQuery` now is internal ## 0.17.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt index d95a26e80b..2a7f6007cc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt @@ -7,7 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Telegr import kotlinx.serialization.* @Serializable -data class RawCallbackQuery( +internal data class RawCallbackQuery( @SerialName(idField) val id: CallbackQueryIdentifier, @SerialName(fromField) From 49cbcea40557bfcc35bd897491c35d21809db0a2 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:51:26 +0600 Subject: [PATCH 10/18] RawChosenInlineResult is internal --- CHANGELOG.md | 1 + .../InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 054e415d04..6185e8ba9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * `RawMessageEntity` now is internal * `RawInlineQuery` now is internal * `RawCallbackQuery` now is internal +* `RawChosenInlineResult` now is internal ## 0.17.0 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt index 1d5b4b81a3..54807fb3a4 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InlineQueries/ChosenInlineResult/RawChosenInlineResult.kt @@ -5,7 +5,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts. import kotlinx.serialization.* @Serializable -data class RawChosenInlineResult( +internal data class RawChosenInlineResult( @SerialName(resultIdField) val resultId: InlineQueryIdentifier, //chosen temporary, can be changed @SerialName(fromField) From 2530b854009d66c40b7a4d4e56f85797987248e3 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:55:41 +0600 Subject: [PATCH 11/18] update changelog --- CHANGELOG.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6185e8ba9c..7f08f9a54c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,19 +2,21 @@ ## 0.18.0 -* `RawMessage` now is internal class -* All `RawMessage` usages was replaced with `Message` interface +* Made internal and not available outside of library: + * `RawMessage` + * `RawUpdate` + * `RawChatMember` + * `RawMessageEntity` + * `RawInlineQuery` + * `RawCallbackQuery` + * `RawChosenInlineResult` + +* All `RawMessage` usages was replaced with `Message` interface (with some of other raw classes was made the same things) * `TelegramBotAPIMessageDeserializationStrategy` was created. It was used for deserialization of Telegram Bot API incoming messages * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages * Update of description -* `RawUpdate` now is internal and not available outside of library -* `RawChatMember` now is internal and not available outside of library * Make `Game` object a little bit more standartizated -* `RawMessageEntity` now is internal -* `RawInlineQuery` now is internal -* `RawCallbackQuery` now is internal -* `RawChosenInlineResult` now is internal ## 0.17.0 From 44751d94b32d11f998265cb82d3d3a7fce0ab43c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 18 Aug 2019 00:18:13 +0600 Subject: [PATCH 12/18] add for Game its own serializer and hide usage of RawMessageEntity --- .../TelegramBotAPI/types/games/Game.kt | 56 +++++++++++++++---- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt index bab1244719..3b9af64398 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt @@ -5,9 +5,12 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.* import com.github.insanusmokrassar.TelegramBotAPI.types.files.* import kotlinx.serialization.* +import kotlinx.serialization.internal.StringDescriptor +import kotlinx.serialization.json.* +import java.lang.UnsupportedOperationException -@Serializable -data class Game internal constructor( +@Serializable(GameSerializer::class) +data class Game( @SerialName(titleField) override val title: String, @SerialName(descriptionField) @@ -17,18 +20,11 @@ data class Game internal constructor( val photo: Photo, @SerialName(textField) override val caption: String? = null, - @Serializable(RawMessageEntitiesSerializer::class) @SerialName(textEntitiesField) - private val rawEntities: RawMessageEntities? = null, + override val captionEntities: List = emptyList(), @SerialName(animationField) val animation: AnimationFile? = null ) : Titled, CaptionedInput { - @Transient - override val captionEntities: List = caption ?.let { - rawEntities ?.map { - it.asMessageEntity(caption) - } - } ?: emptyList() @Deprecated( "Missinterfaced field", @@ -46,3 +42,43 @@ data class Game internal constructor( val textEntities: List? get() = captionEntities } + +internal object GameSerializer : KSerializer { + override val descriptor: SerialDescriptor = StringDescriptor.withName("GameSerializer") + + override fun deserialize(decoder: Decoder): Game { + val json = JsonObjectSerializer.deserialize(decoder) + + val text = json.getPrimitiveOrNull(textField) ?.content + + return Game( + json.getPrimitive(titleField).content, + json.getPrimitive(descriptionField).content, + Json.nonstrict.fromJson( + PhotoSerializer, + json.getObject(photoField) + ), + text, + text ?.let { + Json.nonstrict.fromJson( + RawMessageEntitiesSerializer, + json.getArray(textEntitiesField) + ).map { + it.asMessageEntity(text) + } + } ?: emptyList(), + json.getObjectOrNull( + animationField + ) ?.let { animatedFileJson -> + Json.nonstrict.fromJson( + AnimationFile.serializer(), + animatedFileJson + ) + } + ) + } + + override fun serialize(encoder: Encoder, obj: Game) = throw UnsupportedOperationException( + "Objects of class Game can't be serialized for now" + ) +} From 704457715d7dc3cec84f21535cf792ef0b0ef2b6 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 18 Aug 2019 12:31:33 +0600 Subject: [PATCH 13/18] RawGame added --- CHANGELOG.md | 5 +- .../TelegramBotAPI/types/games/Game.kt | 49 ------------------- .../TelegramBotAPI/types/games/RawGame.kt | 35 +++++++++++++ .../types/message/RawMessage.kt | 7 ++- 4 files changed, 41 insertions(+), 55 deletions(-) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f08f9a54c..16bf90fa5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # TelegramBotAPI changelog -## 0.18.0 +## 0.18.0 Raws cleaning * Made internal and not available outside of library: * `RawMessage` @@ -17,8 +17,9 @@ * `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages * Update of description * Make `Game` object a little bit more standartizated +* `Game` now is not serializable and have no additional trash, related to serialization -## 0.17.0 +## 0.17.0 July 29, 2019 API Update Libraries updates: diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt index 3b9af64398..eb8f033298 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt @@ -9,23 +9,14 @@ import kotlinx.serialization.internal.StringDescriptor import kotlinx.serialization.json.* import java.lang.UnsupportedOperationException -@Serializable(GameSerializer::class) data class Game( - @SerialName(titleField) override val title: String, - @SerialName(descriptionField) val description: String, - @Serializable(PhotoSerializer::class) - @SerialName(photoField) val photo: Photo, - @SerialName(textField) override val caption: String? = null, - @SerialName(textEntitiesField) override val captionEntities: List = emptyList(), - @SerialName(animationField) val animation: AnimationFile? = null ) : Titled, CaptionedInput { - @Deprecated( "Missinterfaced field", ReplaceWith("caption") @@ -42,43 +33,3 @@ data class Game( val textEntities: List? get() = captionEntities } - -internal object GameSerializer : KSerializer { - override val descriptor: SerialDescriptor = StringDescriptor.withName("GameSerializer") - - override fun deserialize(decoder: Decoder): Game { - val json = JsonObjectSerializer.deserialize(decoder) - - val text = json.getPrimitiveOrNull(textField) ?.content - - return Game( - json.getPrimitive(titleField).content, - json.getPrimitive(descriptionField).content, - Json.nonstrict.fromJson( - PhotoSerializer, - json.getObject(photoField) - ), - text, - text ?.let { - Json.nonstrict.fromJson( - RawMessageEntitiesSerializer, - json.getArray(textEntitiesField) - ).map { - it.asMessageEntity(text) - } - } ?: emptyList(), - json.getObjectOrNull( - animationField - ) ?.let { animatedFileJson -> - Json.nonstrict.fromJson( - AnimationFile.serializer(), - animatedFileJson - ) - } - ) - } - - override fun serialize(encoder: Encoder, obj: Game) = throw UnsupportedOperationException( - "Objects of class Game can't be serialized for now" - ) -} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt new file mode 100644 index 0000000000..b08c4f1af1 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt @@ -0,0 +1,35 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.games + +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.* +import com.github.insanusmokrassar.TelegramBotAPI.types.files.* +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +internal data class RawGame( + @SerialName(titleField) + private val title: String, + @SerialName(descriptionField) + private val description: String, + @Serializable(PhotoSerializer::class) + @SerialName(photoField) + private val photo: Photo, + @SerialName(textField) + private val caption: String? = null, + @SerialName(textEntitiesField) + private val captionEntities: RawMessageEntities = emptyList(), + @SerialName(animationField) + private val animation: AnimationFile? = null +) { + @Transient + val asGame = Game( + title, + description, + photo, + caption, + caption ?.let { _ -> captionEntities.map { it.asMessageEntity(caption) } } ?: emptyList(), + animation + ) +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt index 16be55b091..1722678edf 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt @@ -7,6 +7,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMa import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.files.* import com.github.insanusmokrassar.TelegramBotAPI.types.games.Game +import com.github.insanusmokrassar.TelegramBotAPI.types.games.RawGame import com.github.insanusmokrassar.TelegramBotAPI.types.message.ChatEvents.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.ChatEvents.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message @@ -44,15 +45,13 @@ internal data class RawMessage( private val media_group_id: MediaGroupIdentifier? = null, private val author_signature: AuthorSignature? = null, private val text: String? = null, - @Serializable(RawMessageEntitiesSerializer::class) private val entities: RawMessageEntities? = null, private val caption: String? = null, - @Serializable(RawMessageEntitiesSerializer::class) private val caption_entities: RawMessageEntities? = null, private val audio: AudioFile? = null, private val document: DocumentFile? = null, private val animation: AnimationFile? = null, - private val game: Game? = null, + private val game: RawGame? = null, @Serializable(PhotoSerializer::class) private val photo: Photo? = null, private val sticker: Sticker? = null, @@ -128,7 +127,7 @@ internal data class RawMessage( adaptedCaptionEntities ) sticker != null -> StickerContent(sticker) - game != null -> GameContent(game) + game != null -> GameContent(game.asGame) video_note != null -> VideoNoteContent(video_note) contact != null -> ContactContent(contact) location != null -> LocationContent(location) From 2ee5d78362186914374f1bb17c1e0fb8d161ad92 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 18 Aug 2019 12:58:17 +0600 Subject: [PATCH 14/18] TelegramFile was removed --- CHANGELOG.md | 1 + .../TelegramBotAPI/types/files/TelegramFile.kt | 16 ---------------- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/files/TelegramFile.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 16bf90fa5e..719ef6d064 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * Update of description * Make `Game` object a little bit more standartizated * `Game` now is not serializable and have no additional trash, related to serialization +* `TelegramFile` was removed ## 0.17.0 July 29, 2019 API Update diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/files/TelegramFile.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/files/TelegramFile.kt deleted file mode 100644 index d456422d63..0000000000 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/files/TelegramFile.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.github.insanusmokrassar.TelegramBotAPI.types.files - -import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId -import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.* -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class TelegramFile( - @SerialName(fileIdField) - override val fileId: FileId, - @SerialName(fileSizeField) - override val fileSize: Long? = null, - @SerialName("file_path") - val filePath: String? = null -) : TelegramMediaFile From bf8096ece25e1d5da25d51e4ea325f546ec287c5 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sun, 18 Aug 2019 12:59:11 +0600 Subject: [PATCH 15/18] optimize imports --- .../bot/Ktor/KtorRequestsExecutor.kt | 2 -- .../TelegramBotAPI/requests/GetUpdates.kt | 1 - .../requests/chat/get/GetChatAdministrators.kt | 1 - .../requests/chat/members/GetChatMember.kt | 1 - .../requests/send/media/SendMediaGroup.kt | 3 ++- .../send/media/base/MultipartRequestImpl.kt | 1 - .../types/CallbackQuery/RawCallbackQuery.kt | 1 - .../chat/abstracts/extended/ExtendedPublicChat.kt | 1 - .../types/chat/extended/ExtendedChannelChatImpl.kt | 1 - .../types/chat/extended/ExtendedGroupChatImpl.kt | 1 - .../chat/extended/ExtendedSupergroupChatImpl.kt | 1 - .../TelegramBotAPI/types/games/Game.kt | 14 ++++++-------- .../TelegramBotAPI/types/games/RawGame.kt | 6 ++---- .../TelegramBotAPI/types/message/RawMessage.kt | 2 -- .../message/content/media/AnimationContent.kt | 1 - .../TelegramBotAPI/types/update/RawUpdate.kt | 1 - 16 files changed, 10 insertions(+), 28 deletions(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt index dd9756ac87..b8fddf00a5 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt @@ -8,7 +8,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.EmptyLim import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestLimiter import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.extractResult -import com.github.insanusmokrassar.TelegramBotAPI.types.Response import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper import io.ktor.client.HttpClient @@ -17,7 +16,6 @@ import io.ktor.client.engine.HttpClientEngine import io.ktor.util.cio.toByteArray import kotlinx.coroutines.delay import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonElementSerializer class KtorRequestsExecutor( telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt index d2e1193178..b381791d2d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetUpdates.kt @@ -3,7 +3,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest import com.github.insanusmokrassar.TelegramBotAPI.types.ALL_UPDATES_LIST import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.update.RawUpdate import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.Update import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.UpdateSerializerWithoutDeserialization import kotlinx.serialization.KSerializer diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt index 9d5c53722f..609ce7bf2c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/get/GetChatAdministrators.kt @@ -3,7 +3,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMemberSerializerWithoutDeserialization import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt index 6b6d69910d..6a5b63d3ef 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/GetChatMember.kt @@ -2,7 +2,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* -import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMemberDeserializationStrategy import kotlinx.serialization.* diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt index 1755917ada..d493a7af1e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/SendMediaGroup.kt @@ -6,7 +6,8 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMe import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.* import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.* -import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.* +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message +import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.internal.ArrayListSerializer diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt index 55a694dcc3..42e9c7f2a3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/send/media/base/MultipartRequestImpl.kt @@ -3,7 +3,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartRequest import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.KSerializer import kotlinx.serialization.json.JsonObject /** diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt index 2a7f6007cc..415e8046e6 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/CallbackQuery/RawCallbackQuery.kt @@ -1,7 +1,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery import com.github.insanusmokrassar.TelegramBotAPI.types.* -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.* diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt index d42cce3d2b..2e7bcefc0d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/extended/ExtendedPublicChat.kt @@ -1,7 +1,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.PublicChat -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.Serializable diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt index ee5034e18f..0dd170eac3 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedChannelChatImpl.kt @@ -2,7 +2,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.extended import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedChannelChat -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt index 5a22610531..e870b1541c 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedGroupChatImpl.kt @@ -3,7 +3,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.extended import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedGroupChat -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt index b87d2e4868..80a13e37f2 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/extended/ExtendedSupergroupChatImpl.kt @@ -3,7 +3,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.extended import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedSupergroupChat -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import kotlinx.serialization.SerialName diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt index eb8f033298..015363eb06 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/Game.kt @@ -1,13 +1,11 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.games -import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.* -import com.github.insanusmokrassar.TelegramBotAPI.types.* -import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.* -import com.github.insanusmokrassar.TelegramBotAPI.types.files.* -import kotlinx.serialization.* -import kotlinx.serialization.internal.StringDescriptor -import kotlinx.serialization.json.* -import java.lang.UnsupportedOperationException +import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.CaptionedInput +import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.Titled +import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEntity +import com.github.insanusmokrassar.TelegramBotAPI.types.files.AnimationFile +import com.github.insanusmokrassar.TelegramBotAPI.types.files.Photo +import kotlinx.serialization.Transient data class Game( override val title: String, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt index b08c4f1af1..76054a81ea 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/games/RawGame.kt @@ -1,11 +1,9 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.games import com.github.insanusmokrassar.TelegramBotAPI.types.* -import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.* +import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.RawMessageEntities import com.github.insanusmokrassar.TelegramBotAPI.types.files.* -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient +import kotlinx.serialization.* @Serializable internal data class RawGame( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt index 1722678edf..30e00375bf 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt @@ -2,11 +2,9 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.message import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.RawMessageEntities -import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.RawMessageEntitiesSerializer import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.* import com.github.insanusmokrassar.TelegramBotAPI.types.files.* -import com.github.insanusmokrassar.TelegramBotAPI.types.games.Game import com.github.insanusmokrassar.TelegramBotAPI.types.games.RawGame import com.github.insanusmokrassar.TelegramBotAPI.types.message.ChatEvents.* import com.github.insanusmokrassar.TelegramBotAPI.types.message.ChatEvents.abstracts.* diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt index 5548b804b4..a47d4d773e 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/content/media/AnimationContent.kt @@ -7,7 +7,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEntity import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.HTMLParseMode -import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.files.AnimationFile import com.github.insanusmokrassar.TelegramBotAPI.types.files.DocumentFile diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt index 6d237db6d6..c4add0da5a 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/update/RawUpdate.kt @@ -4,7 +4,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery.RawCallbac import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.ChosenInlineResult.RawChosenInlineResult import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.query.RawInlineQuery import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier -import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer import com.github.insanusmokrassar.TelegramBotAPI.types.payments.PreCheckoutQuery From 84eb2fac7cc255b32070c9526ee64e1efbbede0a Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 19 Aug 2019 16:03:01 +0600 Subject: [PATCH 16/18] small refactoring of KtorRequestsExecutor --- .../TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt index b8fddf00a5..b753c78c02 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt @@ -76,7 +76,7 @@ class KtorRequestsExecutor( } val responseObject = jsonFormatter.extractResult(content) - val result = responseObject.result ?.let { + (responseObject.result ?.let { jsonFormatter.fromJson(request.resultDeserializer(), it) } ?: responseObject.parameters ?.let { val error = it.error @@ -92,8 +92,7 @@ class KtorRequestsExecutor( content, "Can't get result object from $content" ) - } - result + }) } } From f86ae2b5929602b3a5a9c804e370a6eef28a2a27 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 19 Aug 2019 16:06:04 +0600 Subject: [PATCH 17/18] Request extracting result method removed --- .../TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt | 3 ++- .../TelegramBotAPI/requests/abstracts/Request.kt | 7 ------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt index b753c78c02..d30c8479df 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/Ktor/KtorRequestsExecutor.kt @@ -8,6 +8,7 @@ import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.EmptyLim import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestLimiter import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.extractResult +import com.github.insanusmokrassar.TelegramBotAPI.types.Response import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper import io.ktor.client.HttpClient @@ -74,7 +75,7 @@ class KtorRequestsExecutor( val content = call.response.use { it.content.toByteArray().toString(Charsets.UTF_8) } - val responseObject = jsonFormatter.extractResult(content) + val responseObject = jsonFormatter.parse(Response.serializer(), content) (responseObject.result ?.let { jsonFormatter.fromJson(request.resultDeserializer(), it) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt index 617eb399ef..d93d77ba0d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/abstracts/Request.kt @@ -1,6 +1,5 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts -import com.github.insanusmokrassar.TelegramBotAPI.types.Response import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls import kotlinx.serialization.* import kotlinx.serialization.json.JsonObject @@ -12,9 +11,3 @@ interface Request { fun json(): JsonObject = toJsonWithoutNulls(RequestSerializer) } object RequestSerializer : KSerializer> by ContextSerializer(Request::class) - -fun StringFormat.extractResult( - from: String -): Response { - return parse(Response.serializer(), from) -} \ No newline at end of file From c6638f310245f6154b38e26e54175e2b7a5a8efb Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 19 Aug 2019 16:12:19 +0600 Subject: [PATCH 18/18] change type of exception inside of serialization of message --- .../TelegramBotAPI/types/message/abstracts/Message.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt index ac99fbbce8..60d0e60dbc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/abstracts/Message.kt @@ -31,6 +31,6 @@ internal object TelegramBotAPIMessageDeserializeOnlySerializer : KSerializer