aboutsummaryrefslogtreecommitdiff
path: root/juick-notifications/src/main/java/com/juick/components/FirebaseManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-notifications/src/main/java/com/juick/components/FirebaseManager.java')
-rw-r--r--juick-notifications/src/main/java/com/juick/components/FirebaseManager.java129
1 files changed, 0 insertions, 129 deletions
diff --git a/juick-notifications/src/main/java/com/juick/components/FirebaseManager.java b/juick-notifications/src/main/java/com/juick/components/FirebaseManager.java
deleted file mode 100644
index 1feee458..00000000
--- a/juick-notifications/src/main/java/com/juick/components/FirebaseManager.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.juick.components;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.api.core.ApiFuture;
-import com.google.api.core.ApiFutureCallback;
-import com.google.api.core.ApiFutures;
-import com.google.auth.oauth2.GoogleCredentials;
-import com.google.firebase.FirebaseApp;
-import com.google.firebase.FirebaseOptions;
-import com.google.firebase.messaging.FirebaseMessaging;
-import com.google.firebase.messaging.FirebaseMessagingException;
-import com.google.firebase.messaging.Message;
-import com.juick.ExternalToken;
-import com.juick.User;
-import com.juick.service.component.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
-import org.springframework.core.task.TaskExecutor;
-
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
-import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-public class FirebaseManager implements NotificationListener {
- private static Logger logger = LoggerFactory.getLogger(FirebaseManager.class);
- @Inject
- ObjectMapper jsonMapper;
- @Value("${fcm_database_url:}")
- private String fcmDatabaseUrl;
- @Inject
- private NotificationsManager notificationsManager;
- @Inject
- private TaskExecutor taskExecutor;
-
- @PostConstruct
- public void initialize() throws IOException {
- Resource serviceAccount =
- new ClassPathResource("serviceAccount.json");
-
- FirebaseOptions options = new FirebaseOptions.Builder()
- .setCredentials(GoogleCredentials.fromStream(serviceAccount.getInputStream()))
- .setDatabaseUrl(fcmDatabaseUrl)
- .build();
-
- FirebaseApp.initializeApp(options);
- }
-
- @Override
- public void processMessageEvent(MessageEvent messageEvent) {
- com.juick.Message jmsg = messageEvent.getMessage();
- List<User> users = messageEvent.getUsers();
- // GCM
- List<String> regids = users.stream().flatMap(u -> u.getTokens().stream()).filter(d -> d.getType().equals("gcm"))
- .map(ExternalToken::getToken).collect(Collectors.toList());
- if (!regids.isEmpty()) {
- String json = null;
- try {
- json = jsonMapper.writeValueAsString(jmsg);
- } catch (JsonProcessingException e) {
- logger.warn("JSON exception", e);
- }
- logger.info(json);
- Message.Builder messageBuilder = Message.builder()
- .putData("message", json);
- regids.forEach(token -> {
- messageBuilder.setToken(token);
- ApiFuture<String> response = FirebaseMessaging.getInstance().sendAsync(messageBuilder.build());
- ApiFutures.addCallback(response, new ApiFutureCallback<String>() {
- @Override
- public void onFailure(Throwable t) {
- if (t instanceof FirebaseMessagingException) {
- FirebaseMessagingException e = (FirebaseMessagingException) t;
- logger.warn("FirebaseMessaging error: {}", e.getErrorCode());
- if (e.getErrorCode().equals("invalid-argument")
- || e.getErrorCode().equals("registration-token-not-registered")
- || e.getErrorCode().equals("invalid-registration-token")) {
- // invalid token
- logger.info("{} is scheduled to remove", token);
- notificationsManager.addInvalidGCMToken(token);
- } else {
- logger.warn("Unhandled FirebaseMessaging exception", t);
- }
- } else {
- logger.warn("Unhandled FCM exception", t);
- }
- }
-
- @Override
- public void onSuccess(String result) {
- logger.info("Successfully sent message: " + result);
- }
- }, taskExecutor);
- });
- } else {
- logger.info("GMS: no recipients");
- }
- }
-
- @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) {
-
- }
-}