public static void setValue(HttpServletRequest request, CallbackRequest callbackRequest) { request.setAttribute(PROPERTY_NAME, callbackRequest.getEvents()); } }
@Override public boolean test(final Event event) { return supportEvent.isAssignableFrom(event.getClass()) && (messageContentType == null || event instanceof MessageEvent && filterByType(messageContentType, ((MessageEvent<?>) event).getMessage())); }
public static MessageEvent<TextMessageContent> createTextMessage(final String text) { return new MessageEvent<>("replyToken", new UserSource("userId"), new TextMessageContent("id", text), Instant.parse("2016-11-19T00:00:00.000Z")); } }
@Test public void textTextGroup() throws IOException { parse("callback/text-group.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(MessageEvent.class); assertThat(event.getSource()) .isInstanceOf(GroupSource.class); assertThat(event.getSource().getUserId()) .isNull(); MessageEvent messageEvent = (MessageEvent) event; assertThat(messageEvent.getReplyToken()) .isEqualTo("nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"); MessageContent message = messageEvent.getMessage(); assertThat(message).isInstanceOf(TextMessageContent.class); }); }
@Test public void testUnknown() throws IOException { parse("callback/unknown.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(2); Event event1 = callbackRequest.getEvents().get(0); assertThat(event1).isInstanceOf(UnknownEvent.class); assertThat(event1.getSource()) .isInstanceOf(UserSource.class); assertThat(event1.getSource().getUserId()) .isEqualTo("U012345678901234567890123456789ab"); assertThat(event1.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); assertThat(((UnknownEvent) event1).getType()) .isEqualTo("greatNewFeature"); Event event2 = callbackRequest.getEvents().get(1); assertThat(event2).isInstanceOf(MessageEvent.class); assertThat(event2.getSource()).isInstanceOf(UnknownSource.class); MessageEvent messageEvent = (MessageEvent) event2; assertThat(messageEvent.getMessage()).isInstanceOf(UnknownMessageContent.class); }); } }
@Test public void textTextUser() throws IOException { parse("callback/text-user.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getDestination()).isEqualTo("Uab012345678901234567890123456789"); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(MessageEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); MessageEvent messageEvent = (MessageEvent) event; assertThat(messageEvent.getReplyToken()) .isEqualTo("nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"); MessageContent message = messageEvent.getMessage(); assertThat(message).isInstanceOf(TextMessageContent.class); }); }
@Test public void testFollow() throws IOException { parse("callback/follow.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(FollowEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); assertThat(event.getSource().getUserId()) .isEqualTo("u206d25c2ea6bd87c17655609a1c37cb8"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); FollowEvent followEvent = (FollowEvent) event; assertThat(followEvent.getReplyToken()) .isEqualTo("nHuyWiB7yP5Zw52FIkcQobQuGDXCTA"); }); }
@Test public void testLineThingsLink() throws IOException { parse("callback/line-things-link.json", callbackRequest -> { assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(ThingsEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); assertThat(event.getSource().getUserId()) .isEqualTo("U012345678901234567890123456789ab"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); ThingsEvent thingsEvent = (ThingsEvent) event; assertThat(thingsEvent.getThings().getDeviceId()) .isEqualTo("t016560bc3fb1e42b9fe9293ca6e2db71"); assertThat(thingsEvent.getThings().getType()) .isEqualTo(ThingsContent.ThingsType.LINK); }); }
@Test public void testAccountLink() throws IOException { parse("callback/account_link.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(AccountLinkEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); assertThat(event.getSource().getUserId()) .isEqualTo("U012345678901234567890123456789ab"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); AccountLinkEvent accountLinkEvent = (AccountLinkEvent) event; assertThat(accountLinkEvent.getLink().getResult()) .isEqualTo(LinkContent.Result.OK); assertThat(accountLinkEvent.getLink().getNonce()) .isEqualTo("xxxxxxxxxxxxxxx"); }); }
@Test public void testPostback() throws IOException { parse("callback/postback.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(PostbackEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); assertThat(event.getSource().getUserId()) .isEqualTo("u206d25c2ea6bd87c17655609a1c37cb8"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); PostbackEvent postbackEvent = (PostbackEvent) event; assertThat(postbackEvent.getPostbackContent().getData()) .isEqualTo("action=buyItem&itemId=123123&color=red"); }); }
@Test public void testJoin() throws IOException { parse("callback/join.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(JoinEvent.class); assertThat(event.getSource()) .isInstanceOf(GroupSource.class); assertThat(((GroupSource) event.getSource()).getGroupId()) .isEqualTo("cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); }); }
private void handleEvent(Event event) throws Exception { if (event instanceof MessageEvent) { MessageContent content = ((MessageEvent) event).getMessage(); if (content instanceof TextMessageContent) { String text = ((TextMessageContent) content).getText(); lineMessagingClient.replyMessage( new ReplyMessage(((MessageEvent) event).getReplyToken(), new TextMessage(text))) .get(); } } else if (event instanceof FollowEvent) { lineMessagingClient.replyMessage( new ReplyMessage(((FollowEvent) event).getReplyToken(), new TextMessage("follow"))) .get(); } } }
private void reply(final List<Message> messages) { final ReplyEvent replyEvent = (ReplyEvent) originalEvent; lineMessagingClient.replyMessage(new ReplyMessage(replyEvent.getReplyToken(), messages)) .whenComplete(this::logging); // DO NOT BLOCK HERE, otherwise, next message processing will be BLOCKED. }
private static void assertDestination(CallbackRequest request) { assertThat(request.getDestination()).isEqualTo("Uab012345678901234567890123456789"); }
@Test public void testUnfollow() throws IOException { parse("callback/unfollow.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(UnfollowEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); assertThat(event.getSource().getUserId()) .isEqualTo("u206d25c2ea6bd87c17655609a1c37cb8"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); }); }
@Test public void testLineThingsUnlink() throws IOException { parse("callback/line-things-unlink.json", callbackRequest -> { assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(ThingsEvent.class); assertThat(event.getSource()) .isInstanceOf(UserSource.class); assertThat(event.getSource().getUserId()) .isEqualTo("U012345678901234567890123456789ab"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); ThingsEvent thingsEvent = (ThingsEvent) event; assertThat(thingsEvent.getThings().getDeviceId()) .isEqualTo("t016560bc3fb1e42b9fe9293ca6e2db71"); assertThat(thingsEvent.getThings().getType()) .isEqualTo(ThingsContent.ThingsType.UNLINK); }); }
@Test public void testLeave() throws IOException { parse("callback/leave.json", callbackRequest -> { assertDestination(callbackRequest); assertThat(callbackRequest.getEvents()).hasSize(1); Event event = callbackRequest.getEvents().get(0); assertThat(event).isInstanceOf(LeaveEvent.class); assertThat(event.getSource()) .isInstanceOf(GroupSource.class); assertThat(((GroupSource) event.getSource()).getGroupId()) .isEqualTo("cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); assertThat(event.getTimestamp()) .isEqualTo(Instant.parse("2016-05-07T13:57:59.859Z")); }); }
public static void setValue(HttpServletRequest request, CallbackRequest callbackRequest) { request.setAttribute(PROPERTY_NAME, callbackRequest.getEvents()); } }
@Override public boolean test(final Event event) { return supportEvent.isAssignableFrom(event.getClass()) && (messageContentType == null || event instanceof MessageEvent && filterByType(messageContentType, ((MessageEvent<?>) event).getMessage())); }
private void reply(final List<Message> messages) { final ReplyEvent replyEvent = (ReplyEvent) originalEvent; lineMessagingClient.replyMessage(new ReplyMessage(replyEvent.getReplyToken(), messages)) .whenComplete(this::logging); // DO NOT BLOCK HERE, otherwise, next message processing will be BLOCKED. }