aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/MessengerManager.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-10-23 21:48:21 +0300
committerGravatar Vitaly Takmazov2018-10-23 21:48:21 +0300
commitee62ef1659604a373cb1c94d3cf0b1a6fd3946e8 (patch)
tree961903fb3f974aa7a9c1fdebb93e379a64449e2e /juick-server/src/main/java/com/juick/server/MessengerManager.java
parentaa2a16145a084290cae1b4c8934a19abfbd7ac5d (diff)
Drop Facebook and Messenger apps
Facebook forbids autoposting since 1 August 2018 Messenger bot requires LLC
Diffstat (limited to 'juick-server/src/main/java/com/juick/server/MessengerManager.java')
-rw-r--r--juick-server/src/main/java/com/juick/server/MessengerManager.java186
1 files changed, 0 insertions, 186 deletions
diff --git a/juick-server/src/main/java/com/juick/server/MessengerManager.java b/juick-server/src/main/java/com/juick/server/MessengerManager.java
deleted file mode 100644
index 96320b3b..00000000
--- a/juick-server/src/main/java/com/juick/server/MessengerManager.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package com.juick.server;
-
-import com.github.messenger4j.Messenger;
-import com.github.messenger4j.exception.MessengerApiException;
-import com.github.messenger4j.exception.MessengerIOException;
-import com.github.messenger4j.exception.MessengerVerificationException;
-import com.github.messenger4j.send.MessagePayload;
-import com.github.messenger4j.send.MessageTag;
-import com.github.messenger4j.send.MessagingType;
-import com.github.messenger4j.send.NotificationType;
-import com.github.messenger4j.send.message.TemplateMessage;
-import com.github.messenger4j.send.message.TextMessage;
-import com.github.messenger4j.send.message.template.ButtonTemplate;
-import com.github.messenger4j.send.message.template.button.UrlButton;
-import com.github.messenger4j.send.recipient.IdRecipient;
-import com.github.messenger4j.userprofile.UserProfile;
-import com.github.messenger4j.webhook.event.TextMessageEvent;
-import com.juick.Message;
-import com.juick.User;
-import com.juick.model.AnonymousUser;
-import com.juick.service.MessagesService;
-import com.juick.service.MessengerService;
-import com.juick.service.UserService;
-import com.juick.service.component.*;
-import com.juick.util.MessageUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Component;
-import org.springframework.web.client.HttpClientErrorException;
-
-import javax.annotation.Nonnull;
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.time.Instant;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
-import static com.juick.formatters.PlainTextFormatter.formatPost;
-import static com.juick.formatters.PlainTextFormatter.formatUrl;
-
-@Component
-public class MessengerManager implements NotificationListener {
- private static final Logger logger = LoggerFactory.getLogger(MessengerManager.class);
- @Inject
- private MessagesService messagesService;
- @Inject
- private UserService userService;
- @Inject
- private MessengerService messengerService;
- @Inject
- private CommandsManager commandsManager;
- @Inject
- private FacebookPageManager facebookPageManager;
-
- @Value("${fb_page_access_token:12345678}")
- private String facebookPageAccessToken;
- @Value("${fb_verify_token:12345678}")
- private String facebookVerifyToken;
- @Value("${fb_secret:12345678}")
- private String facebookSecret;
-
- private Messenger messenger;
-
- @PostConstruct
- public void init() {
- messenger = Messenger.create(facebookPageAccessToken, facebookSecret, facebookVerifyToken);
- }
-
- public String getFacebookVerifyToken() {
- return facebookVerifyToken;
- }
-
- public void processUpdate(String signature , String data) throws MessengerVerificationException {
- messenger.onReceiveEvents(data, Optional.of(signature), event -> {
- final String senderId = event.senderId();
- final Instant timestamp = event.timestamp();
-
- User user_from = userService.getUserByUID(messengerService.getUserId(senderId)).orElse(AnonymousUser.INSTANCE);
- logger.info("Found juick user {}", user_from.getUid());
- if (user_from.isAnonymous()) {
- try {
- UserProfile profile = messenger.queryUserProfile(senderId);
- signupNotify(senderId, messengerService.getSignUpHash(senderId, profile.firstName()));
- } catch (MessengerApiException | MessengerIOException | MalformedURLException e) {
- logger.warn("messenger profile error", e);
- try {
- signupNotify(senderId, messengerService.getSignUpHash(senderId, "anonymous"));
- } catch (MalformedURLException | MessengerApiException | MessengerIOException e1) {
- logger.warn("signup error", e1);
- }
- }
- } else {
- if (event.isTextMessageEvent()) {
- final TextMessageEvent textMessageEvent = event.asTextMessageEvent();
- final String messageId = textMessageEvent.messageId();
- final String text = textMessageEvent.text();
- logger.info("Received text message from '{}' at '{}' with content: {} (mid: {})",
- senderId, timestamp, text, messageId);
- try {
- commandsManager.processCommand(user_from, text, URI.create(StringUtils.EMPTY));
- } catch (Exception e) {
- logger.warn("messenger error", e);
- }
- messengerNotify(senderId, "Message sent", null);
- }
- }
- });
- }
-
- @Override
- public void processMessageEvent(@Nonnull MessageEvent event) {
- Message msg = event.getMessage();
- List<User> subscribedUsers = event.getUsers();
- if (msg.isService()) {
- return;
- }
- if (!MessageUtils.isPM(msg)) {
- String subject = formatPost(msg);
- subscribedUsers
- .forEach(user -> messengerService.getSenderId(user)
- .ifPresent(t -> messengerNotify(t, subject, formatUrl(msg))));
- }
- }
-
- @Override
- public void processSubscribeEvent(SubscribeEvent subscribeEvent) {
-
- }
-
- @Override
- public void processLikeEvent(LikeEvent likeEvent) {
-
- }
-
- @Override
- public void processPingEvent(PingEvent pingEvent) {
-
- }
-
- @Override
- public void processMessageReadEvent(MessageReadEvent messageReadEvent) {
-
- }
-
- @Override
- public void processTopEvent(TopEvent topEvent) {
- Message jmsg = topEvent.getMessage();
- String status = MessageUtils.getMessageHashTags(jmsg) + StringUtils.defaultString(jmsg.getText());
- String link = "https://juick.com/m/" + jmsg.getMid();
- try {
- facebookPageManager.post(status, link);
- } catch (HttpClientErrorException ex) {
- HttpStatus statusCode = ex.getStatusCode();
- String responseString = ex.getResponseBodyAsString();
- logger.warn("facebook error {}: {}", statusCode.value(), responseString);
- }
- }
-
- private void messengerNotify(String messengerUser, String text, String url) {
- try {
- if (!StringUtils.isEmpty(url)) {
- final UrlButton showMessage = UrlButton.create("VIEW MESSAGE", new URL(url));
- ButtonTemplate template = ButtonTemplate.create(text, Collections.singletonList(showMessage));
- messenger.send(MessagePayload.create(IdRecipient.create(messengerUser), MessagingType.MESSAGE_TAG, TemplateMessage.create(template), Optional.of(NotificationType.REGULAR), Optional.of(MessageTag.NON_PROMOTIONAL_SUBSCRIPTION)));
- } else {
- messenger.send(MessagePayload.create(IdRecipient.create(messengerUser), MessagingType.MESSAGE_TAG, TextMessage.create(text), Optional.of(NotificationType.REGULAR), Optional.of(MessageTag.NON_PROMOTIONAL_SUBSCRIPTION)));
- }
- } catch (MessengerApiException | MessengerIOException | MalformedURLException e) {
- logger.warn("messenger error", e);
- }
- }
- private void signupNotify(String messengerUser, String hash) throws MalformedURLException, MessengerApiException, MessengerIOException {
- final UrlButton urlButton = UrlButton.create("LOGIN",
- new URL("https://juick.com/signup?type=messenger&hash=" + hash));
- ButtonTemplate template = ButtonTemplate.create("Login to receive notifications",
- Collections.singletonList(urlButton));
- messenger.send(MessagePayload.create(messengerUser, MessagingType.RESPONSE, TemplateMessage.create(template)));
- }
-}