Skip to content

Commit a62d9aa

Browse files
authored
Add missing duration field in VideoMessageContent class. (#569)
* Add missing duration field in VideoMessageContent class. Close #568 * Use Integer type to consistency with AudioMessageContent. * fix javadoc
1 parent 407d85e commit a62d9aa

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed

line-bot-model/src/main/java/com/linecorp/bot/model/event/message/VideoMessageContent.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package com.linecorp.bot.model.event.message;
1818

19-
import java.net.URI;
20-
2119
import com.fasterxml.jackson.annotation.JsonTypeName;
2220
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
2321
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -36,6 +34,9 @@ public static class VideoMessageContentBuilder {
3634
}
3735

3836
String id;
39-
URI url;
37+
/**
38+
* Length of video file (milliseconds).
39+
*/
40+
Integer duration;
4041
ContentProvider contentProvider;
4142
}

line-bot-model/src/test/java/com/linecorp/bot/model/event/CallbackRequestTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import com.linecorp.bot.model.event.message.TextMessageContent;
4343
import com.linecorp.bot.model.event.message.TextMessageContent.Emoji;
4444
import com.linecorp.bot.model.event.message.UnknownMessageContent;
45+
import com.linecorp.bot.model.event.message.VideoMessageContent;
4546
import com.linecorp.bot.model.event.source.GroupSource;
4647
import com.linecorp.bot.model.event.source.Source;
4748
import com.linecorp.bot.model.event.source.UnknownSource;
@@ -579,6 +580,22 @@ public void testUnsend() throws IOException {
579580
});
580581
}
581582

583+
@Test
584+
public void testVideo() throws IOException {
585+
parse("callback/video.json", callbackRequest -> {
586+
assertDestination(callbackRequest);
587+
Event event = callbackRequest.getEvents().get(0);
588+
assertThat(event.getSource()).isInstanceOf(UserSource.class);
589+
assertThat(event).isInstanceOf(MessageEvent.class);
590+
assertThat(event.getMode())
591+
.isEqualTo(EventMode.ACTIVE);
592+
593+
MessageEvent messageEvent = (MessageEvent) event;
594+
VideoMessageContent videoMessageContent = (VideoMessageContent)messageEvent.getMessage();
595+
assertThat(videoMessageContent.getDuration()).isEqualTo(60000L);
596+
});
597+
}
598+
582599
// Event, that has brand new eventType
583600
@Test
584601
public void testUnknown() throws IOException {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"destination": "Uab012345678901234567890123456789",
3+
"events": [
4+
{
5+
"replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
6+
"type": "message",
7+
"mode": "active",
8+
"timestamp": 1462629479859,
9+
"source": {
10+
"type": "user",
11+
"userId": "U4af4980629..."
12+
},
13+
"message": {
14+
"id": "325708",
15+
"type": "video",
16+
"duration": 60000,
17+
"contentProvider": {
18+
"type": "external",
19+
"originalContentUrl": "https://example.com/original.mp4",
20+
"previewImageUrl": "https://example.com/preview.jpg"
21+
}
22+
}
23+
}
24+
]
25+
}

sample-spring-boot-kitchensink/src/main/java/com/example/bot/spring/KitchenSinkController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ public void handleAudioMessageEvent(MessageEvent<AudioMessageContent> event) thr
178178

179179
@EventMapping
180180
public void handleVideoMessageEvent(MessageEvent<VideoMessageContent> event) throws IOException {
181+
log.info("Got video message: duration={}ms", event.getMessage().getDuration());
182+
181183
// You need to install ffmpeg and ImageMagick.
182184
handleHeavyContent(
183185
event.getReplyToken(),

0 commit comments

Comments
 (0)