diff options
Diffstat (limited to 'juick-api/src/main/java/com/juick/api/MessengerManager.java')
-rw-r--r-- | juick-api/src/main/java/com/juick/api/MessengerManager.java | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/juick-api/src/main/java/com/juick/api/MessengerManager.java b/juick-api/src/main/java/com/juick/api/MessengerManager.java deleted file mode 100644 index 7341b946..00000000 --- a/juick-api/src/main/java/com/juick/api/MessengerManager.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.juick.api; - -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.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.userprofile.UserProfile; -import com.github.messenger4j.webhook.event.TextMessageEvent; -import com.juick.Message; -import com.juick.User; -import com.juick.server.component.MessageEvent; -import com.juick.service.MessagesService; -import com.juick.service.MessengerService; -import com.juick.service.SubscriptionService; -import com.juick.service.UserService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; - -import javax.annotation.Nonnull; -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import java.net.MalformedURLException; -import java.net.URL; -import java.time.Instant; -import java.util.Collections; -import java.util.Optional; - -import static com.juick.formatters.PlainTextFormatter.formatPost; -import static com.juick.formatters.PlainTextFormatter.formatUrl; - -@Component -public class MessengerManager implements ApplicationListener<MessageEvent> { - private static final Logger logger = LoggerFactory.getLogger(MessengerManager.class); - @Inject - private MessagesService messagesService; - @Inject - private SubscriptionService subscriptionService; - @Inject - private UserService userService; - @Inject - private MessengerService messengerService; - @Inject - private ApiServer apiServer; - - @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(new User()); - logger.info("Found juick user {}", user_from.getUid()); - if (user_from.getUid() == 0) { - 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); - apiServer.processMessage(user_from, text, null); - messengerNotify(senderId, "Message sent", null); - } - } - }); - } - - @Override - public void onApplicationEvent(@Nonnull MessageEvent event) { - Message msg = event.getMessage(); - if (msg.getMid() > 0 && msg.getRid() == 0) { - String subject = formatPost(msg); - subscriptionService.getSubscribedUsers(msg.getUser().getUid(), msg.getMid()) - .forEach(user -> messengerService.getSenderId(user) - .ifPresent(t -> messengerNotify(t, subject, formatUrl(msg)))); - } else if (msg.getRid() > 0) { - // get quote - com.juick.Message jmsg = messagesService.getReply(msg.getMid(), msg.getRid()); - String subject = formatPost(jmsg); - subscriptionService.getUsersSubscribedToComments(msg.getMid(), msg.getUser().getUid()) - .forEach(user -> messengerService.getSenderId(user) - .ifPresent(t -> messengerNotify(t, subject, formatUrl(jmsg)))); - } - } - - 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(messengerUser, TemplateMessage.create(template))); - } else { - messenger.send(MessagePayload.create(messengerUser, TextMessage.create(text))); - } - } 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, TemplateMessage.create(template))); - } -} |