Skip to content

Commit 21c3b39

Browse files
authored
Merge pull request #37 from nickrobson/feature/message-to-request
Add helper methods that allow creation of edit requests from message objects
2 parents 04bd231 + 2c75b7f commit 21c3b39

31 files changed

Lines changed: 1123 additions & 21 deletions

jtelegrambotapi-core/pom.xml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,46 @@
2828
<groupId>com.squareup.okhttp3</groupId>
2929
<artifactId>okhttp</artifactId>
3030
</dependency>
31+
32+
<!-- test dependencies -->
33+
34+
<dependency>
35+
<groupId>org.mockito</groupId>
36+
<artifactId>mockito-core</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>org.junit.jupiter</groupId>
40+
<artifactId>junit-jupiter-api</artifactId>
41+
</dependency>
42+
<dependency>
43+
<groupId>org.junit.platform</groupId>
44+
<artifactId>junit-platform-surefire-provider</artifactId>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.junit.jupiter</groupId>
48+
<artifactId>junit-jupiter-engine</artifactId>
49+
</dependency>
3150
</dependencies>
3251

52+
<build>
53+
<plugins>
54+
<plugin>
55+
<groupId>org.apache.maven.plugins</groupId>
56+
<artifactId>maven-surefire-plugin</artifactId>
57+
<dependencies>
58+
<dependency>
59+
<groupId>org.junit.platform</groupId>
60+
<artifactId>junit-platform-surefire-provider</artifactId>
61+
<version>${dependency.junit-platform-surefire-provider.version}</version>
62+
</dependency>
63+
<dependency>
64+
<groupId>org.junit.jupiter</groupId>
65+
<artifactId>junit-jupiter-engine</artifactId>
66+
<version>${dependency.junit.version}</version>
67+
</dependency>
68+
</dependencies>
69+
</plugin>
70+
</plugins>
71+
</build>
72+
3373
</project>

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/Message.java

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package com.jtelegram.api.message;
22

3-
import com.google.gson.*;
3+
import com.google.gson.JsonDeserializationContext;
4+
import com.google.gson.JsonDeserializer;
5+
import com.google.gson.JsonElement;
6+
import com.google.gson.JsonObject;
7+
import com.google.gson.JsonParseException;
48
import com.jtelegram.api.chat.Chat;
9+
import com.jtelegram.api.requests.message.DeleteMessage;
10+
import com.jtelegram.api.requests.message.ForwardMessage;
11+
import com.jtelegram.api.requests.message.edit.EditMessageReplyMarkup;
512
import com.jtelegram.api.user.User;
13+
import java.lang.reflect.Type;
614
import lombok.Getter;
715
import lombok.ToString;
816

9-
import java.lang.reflect.Type;
10-
1117
@Getter
1218
@ToString
1319
public abstract class Message<T> {
@@ -32,6 +38,33 @@ public User getSender() {
3238
return from;
3339
}
3440

41+
/**
42+
* Creates a request builder for editing the reply markup of this message.
43+
*
44+
* @return the request builder
45+
*/
46+
public EditMessageReplyMarkup.EditMessageReplyMarkupBuilder toEditReplyMarkupRequest() {
47+
return EditMessageReplyMarkup.forMessage(this);
48+
}
49+
50+
/**
51+
* Creates a request builder for forwarding this message to another chat.
52+
*
53+
* @return the request builder
54+
*/
55+
public ForwardMessage.ForwardMessageBuilder toForwardRequest() {
56+
return ForwardMessage.forMessage(this);
57+
}
58+
59+
/**
60+
* Creates a request builder for deleting this message.
61+
*
62+
* @return the request builder
63+
*/
64+
public DeleteMessage.DeleteMessageBuilder toDeleteRequest() {
65+
return DeleteMessage.forMessage(this);
66+
}
67+
3568
public static class Deserializer implements JsonDeserializer<Message> {
3669
@Override
3770
public Message deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) throws JsonParseException {

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/MessageType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public enum MessageType {
1919
VOICE(VoiceMessage.class, VoiceMessageEvent.class),
2020
VIDEO_NOTE(VideoNoteMessage.class, VideoNoteMessageEvent.class),
2121
CONTACT(ContactMessage.class, ContactMessageEvent.class),
22-
LOCATION(LocationMessage.class, LocationMessageEvent.class),
2322
VENUE(VenueMessage.class, VenueMessageEvent.class),
23+
LOCATION(LocationMessage.class, LocationMessageEvent.class),
2424
INVOICE(InvoiceMessage.class, InvoiceMessageEvent.class),
2525
SUCCESSFUL_PAYMENT(SuccessfulPaymentMessage.class, SuccessfulPaymentEvent.class),
2626

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/AudioMessage.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.jtelegram.api.message.CaptionableMessage;
44
import com.jtelegram.api.message.media.Audio;
5+
import com.jtelegram.api.requests.message.edit.EditMessageCaption;
6+
import com.jtelegram.api.requests.message.edit.EditMessageMedia;
57
import lombok.Getter;
68
import lombok.ToString;
79

@@ -14,4 +16,22 @@ public class AudioMessage extends CaptionableMessage<Audio> {
1416
public Audio getContent() {
1517
return audio;
1618
}
19+
20+
/**
21+
* Creates a request builder for editing the caption of this message.
22+
*
23+
* @return the request builder
24+
*/
25+
public EditMessageCaption.EditMessageCaptionBuilder toEditCaptionRequest() {
26+
return EditMessageCaption.forMessage(this);
27+
}
28+
29+
/**
30+
* Creates a request builder for editing the media shown in this message.
31+
*
32+
* @return the request builder
33+
*/
34+
public EditMessageMedia.EditMessageMediaBuilder toEditMediaRequest() {
35+
return EditMessageMedia.forMessage(this);
36+
}
1737
}

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/DocumentMessage.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.jtelegram.api.message.CaptionableMessage;
44
import com.jtelegram.api.message.media.Document;
5+
import com.jtelegram.api.requests.message.edit.EditMessageCaption;
6+
import com.jtelegram.api.requests.message.edit.EditMessageMedia;
57
import lombok.Getter;
68
import lombok.ToString;
79

@@ -14,4 +16,22 @@ public class DocumentMessage extends CaptionableMessage<Document> {
1416
public Document getContent() {
1517
return document;
1618
}
19+
20+
/**
21+
* Creates a request builder for editing the caption of this message.
22+
*
23+
* @return the request builder
24+
*/
25+
public EditMessageCaption.EditMessageCaptionBuilder toEditCaptionRequest() {
26+
return EditMessageCaption.forMessage(this);
27+
}
28+
29+
/**
30+
* Creates a request builder for editing the media shown in this message.
31+
*
32+
* @return the request builder
33+
*/
34+
public EditMessageMedia.EditMessageMediaBuilder toEditMediaRequest() {
35+
return EditMessageMedia.forMessage(this);
36+
}
1737
}

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/GameMessage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.jtelegram.api.message.Message;
44
import com.jtelegram.api.message.games.Game;
5+
import com.jtelegram.api.requests.message.edit.EditTextMessage;
56
import lombok.Getter;
67
import lombok.ToString;
78

@@ -14,4 +15,8 @@ public class GameMessage extends Message<Game> {
1415
public Game getContent() {
1516
return game;
1617
}
18+
19+
public EditTextMessage.EditTextMessageBuilder toEditTextRequest() {
20+
return EditTextMessage.forMessage(this);
21+
}
1722
}

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/LocationMessage.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.jtelegram.api.message.Message;
44
import com.jtelegram.api.message.media.Location;
5+
import com.jtelegram.api.requests.message.edit.EditMessageLiveLocation;
56
import lombok.Getter;
67
import lombok.ToString;
78

@@ -14,4 +15,13 @@ public class LocationMessage extends Message<Location> {
1415
public Location getContent() {
1516
return location;
1617
}
18+
19+
/**
20+
* Creates a request builder for editing the location represented by this message.
21+
*
22+
* @return the request builder
23+
*/
24+
public EditMessageLiveLocation.EditMessageLiveLocationBuilder toEditLiveLocationRequest() {
25+
return EditMessageLiveLocation.forMessage(this);
26+
}
1727
}

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/PhotoMessage.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.jtelegram.api.message.CaptionableMessage;
44
import com.jtelegram.api.message.media.PhotoSize;
5+
import com.jtelegram.api.requests.message.edit.EditMessageCaption;
6+
import com.jtelegram.api.requests.message.edit.EditMessageMedia;
57
import lombok.Getter;
68
import lombok.ToString;
79

@@ -35,4 +37,22 @@ public PhotoSize getHighestResolutionPhoto() {
3537
.findFirst()
3638
.orElse(null);
3739
}
40+
41+
/**
42+
* Creates a request builder for editing the caption of this message.
43+
*
44+
* @return the request builder
45+
*/
46+
public EditMessageCaption.EditMessageCaptionBuilder toEditCaptionRequest() {
47+
return EditMessageCaption.forMessage(this);
48+
}
49+
50+
/**
51+
* Creates a request builder for editing the media shown in this message.
52+
*
53+
* @return the request builder
54+
*/
55+
public EditMessageMedia.EditMessageMediaBuilder toEditMediaRequest() {
56+
return EditMessageMedia.forMessage(this);
57+
}
3858
}

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/TextMessage.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.jtelegram.api.message.Message;
44
import com.jtelegram.api.message.entity.MessageEntity;
5+
import com.jtelegram.api.requests.message.edit.EditTextMessage;
56
import lombok.Getter;
67
import lombok.ToString;
78

@@ -28,4 +29,13 @@ public List<MessageEntity> getEntities() {
2829

2930
return entities;
3031
}
32+
33+
/**
34+
* Creates a request builder for editing the text of this message.
35+
*
36+
* @return the request builder
37+
*/
38+
public EditTextMessage.EditTextMessageBuilder toEditTextRequest() {
39+
return EditTextMessage.forMessage(this);
40+
}
3141
}

jtelegrambotapi-core/src/main/java/com/jtelegram/api/message/impl/VideoMessage.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.jtelegram.api.message.CaptionableMessage;
44
import com.jtelegram.api.message.media.Video;
5+
import com.jtelegram.api.requests.message.edit.EditMessageCaption;
6+
import com.jtelegram.api.requests.message.edit.EditMessageMedia;
57
import lombok.Getter;
68
import lombok.ToString;
79

@@ -22,4 +24,22 @@ public class VideoMessage extends CaptionableMessage<Video> {
2224
public Video getContent() {
2325
return video;
2426
}
27+
28+
/**
29+
* Creates a request builder for editing the caption of this message.
30+
*
31+
* @return the request builder
32+
*/
33+
public EditMessageCaption.EditMessageCaptionBuilder toEditCaptionRequest() {
34+
return EditMessageCaption.forMessage(this);
35+
}
36+
37+
/**
38+
* Creates a request builder for editing the media shown in this message.
39+
*
40+
* @return the request builder
41+
*/
42+
public EditMessageMedia.EditMessageMediaBuilder toEditMediaRequest() {
43+
return EditMessageMedia.forMessage(this);
44+
}
2545
}

0 commit comments

Comments
 (0)