From 41c5ba7309f58e01539871c161432af9f044d528 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 17 Aug 2019 22:26:02 +0600 Subject: [PATCH] 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) +}