Skip to content

Commit ded9f5f

Browse files
committed
Adding OwnedGift type adapter
1 parent b874222 commit ded9f5f

File tree

4 files changed

+44
-2
lines changed

4 files changed

+44
-2
lines changed

library/src/main/java/com/pengrad/telegrambot/model/gift/owned/OwnedGiftRegular.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ class OwnedGiftRegular private constructor(
1717
@get:JvmName("wasRefunded") var wasRefunded: Boolean?,
1818
@get:JvmName("convertStarCount") var convertStarCount: Int?,
1919
@get:JvmName("prepaidUpgradeStarCount") var prepaidUpgradeStarCount: Int?
20-
) : OwnedGift(type = "regular") {
20+
) : OwnedGift(type = TYPE) {
21+
22+
companion object {
23+
const val TYPE = "regular"
24+
}
2125

2226
constructor(gift: Gift, sendDate: Long) : this(
2327
gift = gift,

library/src/main/java/com/pengrad/telegrambot/model/gift/owned/OwnedGiftUnique.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,10 @@ class OwnedGiftUnique(
1212
@get:JvmName("isSaved") var isSaved: Boolean?,
1313
@get:JvmName("canBeTransferred") var canBeTransferred: Boolean?,
1414
@get:JvmName("transferStarCount") var prepaidUpgradeStarCount: Int?
15-
) : OwnedGift(type = "unique")
15+
) : OwnedGift(type = TYPE) {
16+
17+
companion object {
18+
const val TYPE = "unique"
19+
}
20+
21+
}

library/src/main/java/com/pengrad/telegrambot/utility/BotUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.pengrad.telegrambot.model.chatbackground.BackgroundFill;
88
import com.pengrad.telegrambot.model.chatbackground.BackgroundType;
99
import com.pengrad.telegrambot.model.chatboost.source.ChatBoostSource;
10+
import com.pengrad.telegrambot.model.gift.owned.OwnedGift;
1011
import com.pengrad.telegrambot.model.message.MaybeInaccessibleMessage;
1112
import com.pengrad.telegrambot.model.message.origin.MessageOrigin;
1213
import com.pengrad.telegrambot.model.paidmedia.PaidMedia;
@@ -38,6 +39,7 @@ private BotUtils() {}
3839
.registerTypeAdapter(RevenueWithdrawalState.class, new RevenueWithdrawalStateTypeAdapter())
3940
.registerTypeAdapter(TransactionPartner.class, TransactionPartnerTypeAdapter.INSTANCE)
4041
.registerTypeAdapter(PaidMedia.class, new PaidMediaTypeAdapter())
42+
.registerTypeAdapter(OwnedGift.class, new OwnedGiftTypeAdapter())
4143
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
4244
.create();
4345

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.pengrad.telegrambot.utility.gson;
2+
3+
import com.google.gson.*;
4+
import com.pengrad.telegrambot.model.gift.owned.OwnedGift;
5+
import com.pengrad.telegrambot.model.gift.owned.OwnedGiftRegular;
6+
import com.pengrad.telegrambot.model.gift.owned.OwnedGiftUnique;
7+
import com.pengrad.telegrambot.model.paidmedia.PaidMedia;
8+
import com.pengrad.telegrambot.model.paidmedia.PaidMediaPhoto;
9+
import com.pengrad.telegrambot.model.paidmedia.PaidMediaPreview;
10+
import com.pengrad.telegrambot.model.paidmedia.PaidMediaVideo;
11+
12+
import java.lang.reflect.Type;
13+
14+
public class OwnedGiftTypeAdapter implements JsonDeserializer<OwnedGift> {
15+
16+
@Override
17+
public OwnedGift deserialize(JsonElement element, Type type, JsonDeserializationContext context) throws JsonParseException {
18+
JsonObject object = element.getAsJsonObject();
19+
JsonPrimitive primitive = object.getAsJsonPrimitive("type");
20+
String discriminator = primitive != null ? primitive.getAsString() : "unknown";
21+
22+
if (OwnedGiftRegular.TYPE.equals(discriminator)) {
23+
return context.deserialize(object, OwnedGiftRegular.class);
24+
} else if (OwnedGiftUnique.TYPE.equals(discriminator)) {
25+
return context.deserialize(object, OwnedGiftUnique.class);
26+
}
27+
28+
return new OwnedGift(discriminator);
29+
}
30+
}

0 commit comments

Comments
 (0)