Externalize interface for MediaSendingMethods and add getMethod to PartialBotApiMethod

This commit is contained in:
Chase22 2022-12-31 11:34:37 +01:00
parent fd3118b9b2
commit b3099f58cf
17 changed files with 193 additions and 26 deletions

View File

@ -2,7 +2,6 @@ package org.telegram.telegrambots.meta.api.methods;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
@ -17,10 +16,4 @@ import java.io.Serializable;
public abstract class BotApiMethod<T extends Serializable> extends PartialBotApiMethod<T> {
protected static final String METHOD_FIELD = "method";
/**
* Getter for method path (that is the same as method name)
* @return Method path
*/
@JsonProperty(METHOD_FIELD)
public abstract String getMethod();
}

View File

@ -1,6 +1,7 @@
package org.telegram.telegrambots.meta.api.methods;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.CollectionType;
@ -56,4 +57,11 @@ public abstract class PartialBotApiMethod<T extends Serializable> implements Val
throw new TelegramApiRequestException("Unable to deserialize response", e);
}
}
/**
* Getter for method path (that is the same as method name)
* @return Method path
*/
@JsonProperty(BotApiMethod.METHOD_FIELD)
public abstract String getMethod();
}

View File

@ -46,6 +46,11 @@ public class SetChatPhoto extends PartialBotApiMethod<Boolean> {
this.chatId = chatId.toString();
}
@Override
public String getMethod() {
return PATH;
}
@Override
public Boolean deserializeResponse(String answer) throws TelegramApiRequestException {
return deserializeResponse(answer, Boolean.class);

View File

@ -11,7 +11,6 @@ import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
@ -37,7 +36,7 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendAnimation extends PartialBotApiMethod<Message> {
public class SendAnimation extends SendMediaBotMethod<Message> {
public static final String PATH = "sendAnimation";
public static final String CHATID_FIELD = "chat_id";
@ -58,6 +57,8 @@ public class SendAnimation extends PartialBotApiMethod<Message> {
@NonNull
private String chatId; ///< Unique identifier for the chat to send the message to (Or username for channels)
private Integer messageThreadId;
/**
* Animation to send. Pass a file_id as String to send an animation that exists on the
* Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an animation
@ -67,7 +68,6 @@ public class SendAnimation extends PartialBotApiMethod<Message> {
* Unique identifier for the target message thread (topic) of the forum;
* for forum supergroups only
*/
private Integer messageThreadId;
@NonNull
private InputFile animation;
private Integer duration; ///< Optional. Duration of sent animation in seconds
@ -130,6 +130,21 @@ public class SendAnimation extends PartialBotApiMethod<Message> {
}
}
@Override
public String getMethod() {
return PATH;
}
@Override
public InputFile getFile() {
return animation;
}
@Override
public String getFileField() {
return ANIMATION_FIELD;
}
public static class SendAnimationBuilder {
@Tolerate

View File

@ -11,7 +11,6 @@ import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
@ -38,7 +37,7 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendAudio extends PartialBotApiMethod<Message> {
public class SendAudio extends SendMediaBotMethod<Message> {
public static final String PATH = "sendaudio";
public static final String DURATION_FIELD = "duration";
@ -127,6 +126,21 @@ public class SendAudio extends PartialBotApiMethod<Message> {
}
}
@Override
public String getMethod() {
return PATH;
}
@Override
public InputFile getFile() {
return audio;
}
@Override
public String getFileField() {
return AUDIO_FIELD;
}
public static class SendAudioBuilder {
@Tolerate

View File

@ -11,7 +11,6 @@ import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
@ -34,7 +33,7 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendDocument extends PartialBotApiMethod<Message> {
public class SendDocument extends SendMediaBotMethod<Message> {
public static final String PATH = "senddocument";
public static final String CHATID_FIELD = "chat_id";
@ -97,6 +96,7 @@ public class SendDocument extends PartialBotApiMethod<Message> {
public Message deserializeResponse(String answer) throws TelegramApiRequestException {
return deserializeResponse(answer, Message.class);
}
@Override
public void validate() throws TelegramApiValidationException {
if (chatId.isEmpty()) {
@ -118,6 +118,21 @@ public class SendDocument extends PartialBotApiMethod<Message> {
}
}
@Override
public InputFile getFile() {
return document;
}
@Override
public String getFileField() {
return DOCUMENT_FIELD;
}
@Override
public String getMethod() {
return PATH;
}
public static class SendDocumentBuilder {
@Tolerate

View File

@ -0,0 +1,24 @@
package org.telegram.telegrambots.meta.api.methods.send;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import java.io.Serializable;
public abstract class SendMediaBotMethod<T extends Serializable> extends PartialBotApiMethod<T> {
public static String CHATID_FIELD = "chat_id";
public static String MESSAGETHREADID_FIELD = "message_thread_id";
public static String REPLYTOMESSAGEID_FIELD = "reply_to_message_id";
public static String DISABLENOTIFICATION_FIELD = "disable_notification";
public static String PROTECTCONTENT_FIELD = "protect_content";
public static String ALLOWSENDINGWITHOUTREPLY_FIELD = "allow_sending_without_reply";
public abstract String getChatId();
public abstract Integer getMessageThreadId();
public abstract Integer getReplyToMessageId();
public abstract Boolean getDisableNotification();
public abstract Boolean getAllowSendingWithoutReply();
public abstract Boolean getProtectContent();
public abstract InputFile getFile();
public abstract String getFileField();
}

View File

@ -115,6 +115,11 @@ public class SendMediaGroup extends PartialBotApiMethod<ArrayList<Message>> {
}
}
@Override
public String getMethod() {
return PATH;
}
public static class SendMediaGroupBuilder {
@Tolerate

View File

@ -11,7 +11,6 @@ import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
@ -35,7 +34,7 @@ import java.util.Objects;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendPhoto extends PartialBotApiMethod<Message> {
public class SendPhoto extends SendMediaBotMethod<Message> {
public static final String PATH = "sendphoto";
public static final String CHATID_FIELD = "chat_id";
@ -108,8 +107,22 @@ public class SendPhoto extends PartialBotApiMethod<Message> {
}
}
@Override
public InputFile getFile() {
return photo;
}
@Override
public String getFileField() {
return PHOTO_FIELD;
}
@Override
public String getMethod() {
return PATH;
}
public static class SendPhotoBuilder {
@Tolerate
public SendPhotoBuilder chatId(@NonNull Long chatId) {
this.chatId = chatId.toString();

View File

@ -10,7 +10,6 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboard;
@ -31,7 +30,7 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendSticker extends PartialBotApiMethod<Message> {
public class SendSticker extends SendMediaBotMethod<Message> {
public static final String PATH = "sendsticker";
public static final String CHATID_FIELD = "chat_id";
@ -93,6 +92,22 @@ public class SendSticker extends PartialBotApiMethod<Message> {
}
}
@Override
public String getMethod() {
return null;
}
@Override
public InputFile getFile() {
return sticker;
}
@Override
public String getFileField() {
return STICKER_FIELD;
}
public static class SendStickerBuilder {
@Tolerate

View File

@ -11,7 +11,6 @@ import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
@ -35,7 +34,7 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendVideo extends PartialBotApiMethod<Message> {
public class SendVideo extends SendMediaBotMethod<Message> {
public static final String PATH = "sendvideo";
public static final String CHATID_FIELD = "chat_id";
@ -125,6 +124,21 @@ public class SendVideo extends PartialBotApiMethod<Message> {
}
}
@Override
public InputFile getFile() {
return video;
}
@Override
public String getFileField() {
return VIDEO_FIELD;
}
@Override
public String getMethod() {
return PATH;
}
public static class SendVideoBuilder {
@Tolerate

View File

@ -10,7 +10,6 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboard;
@ -32,7 +31,7 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendVideoNote extends PartialBotApiMethod<Message> {
public class SendVideoNote extends SendMediaBotMethod<Message> {
public static final String PATH = "sendvideonote";
public static final String CHATID_FIELD = "chat_id";
@ -106,6 +105,21 @@ public class SendVideoNote extends PartialBotApiMethod<Message> {
}
}
@Override
public String getMethod() {
return PATH;
}
@Override
public InputFile getFile() {
return videoNote;
}
@Override
public String getFileField() {
return VIDEONOTE_FIELD;
}
public static class SendVideoNoteBuilder {
@Tolerate

View File

@ -11,7 +11,6 @@ import lombok.Setter;
import lombok.Singular;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.MessageEntity;
@ -36,7 +35,7 @@ import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SendVoice extends PartialBotApiMethod<Message> {
public class SendVoice extends SendMediaBotMethod<Message> {
public static final String PATH = "sendvoice";
public static final String CHATID_FIELD = "chat_id";
@ -106,6 +105,21 @@ public class SendVoice extends PartialBotApiMethod<Message> {
}
}
@Override
public String getMethod() {
return PATH;
}
@Override
public InputFile getFile() {
return voice;
}
@Override
public String getFileField() {
return VOICE_FIELD;
}
public static class SendVoiceBuilder {
@Tolerate

View File

@ -76,6 +76,11 @@ public class AddStickerToSet extends PartialBotApiMethod<Boolean> {
return deserializeResponse(answer, Boolean.class);
}
@Override
public String getMethod() {
return PATH;
}
@Override
public void validate() throws TelegramApiValidationException {
if (userId <= 0) {

View File

@ -10,7 +10,6 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Tolerate;
import org.telegram.telegrambots.meta.api.methods.CopyMessage;
import org.telegram.telegrambots.meta.api.methods.PartialBotApiMethod;
import org.telegram.telegrambots.meta.api.objects.InputFile;
import org.telegram.telegrambots.meta.api.objects.stickers.MaskPosition;
@ -18,7 +17,6 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException;
import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
import java.util.Arrays;
import java.util.List;
/**
* @author Ruben Bermudez
@ -124,6 +122,11 @@ public class CreateNewStickerSet extends PartialBotApiMethod<Boolean> {
return "mask".equals(stickerType);
}
@Override
public String getMethod() {
return PATH;
}
@Override
public Boolean deserializeResponse(String answer) throws TelegramApiRequestException {
return deserializeResponse(answer, Boolean.class);

View File

@ -42,6 +42,11 @@ public class UploadStickerFile extends PartialBotApiMethod<File> {
@NonNull
private InputFile pngSticker; ///< New sticker file
@Override
public String getMethod() {
return PATH;
}
@Override
public File deserializeResponse(String answer) throws TelegramApiRequestException {
return deserializeResponse(answer, File.class);

View File

@ -81,6 +81,11 @@ public class EditMessageMedia extends PartialBotApiMethod<Serializable> {
this.chatId = chatId == null ? null : chatId.toString();
}
@Override
public String getMethod() {
return PATH;
}
@Override
public Serializable deserializeResponse(String answer) throws TelegramApiRequestException {
try {