From 767e62fbf23460e6fb99a9c75e00798d85036326 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sun, 5 Feb 2017 21:57:02 +0300 Subject: juick-api: update notifications api --- .../java/com/juick/components/Notifications.java | 54 +++++++++------------- 1 file changed, 22 insertions(+), 32 deletions(-) (limited to 'juick-notifications/src/main/java/com') diff --git a/juick-notifications/src/main/java/com/juick/components/Notifications.java b/juick-notifications/src/main/java/com/juick/components/Notifications.java index f41db9e3..e7adac74 100644 --- a/juick-notifications/src/main/java/com/juick/components/Notifications.java +++ b/juick-notifications/src/main/java/com/juick/components/Notifications.java @@ -20,6 +20,7 @@ package com.juick.components; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.android.gcm.server.*; +import com.juick.TokensList; import com.juick.components.mpns.MPNSError; import com.juick.components.mpns.MPNSToken; import com.notnoop.apns.APNS; @@ -109,20 +110,29 @@ public class Notifications implements AutoCloseable { boolean isReply = jmsg.getRid() > 0; int pmTo = NumberUtils.toInt(msg.getTo().getLocal(), 0); - /*** ANDROID ***/ - final List regids = new ArrayList<>(); + final List tokensList = new ArrayList<>(); if (isPM) { - regids.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%d", + tokensList.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%d", pmTo), - HttpMethod.GET, null, new ParameterizedTypeReference>() { + HttpMethod.GET, null, new ParameterizedTypeReference>() { }).getBody()); } else { - regids.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%s&mid=%s", - jmsg.getUser().getUid(), jmsg.getMid()), - HttpMethod.GET, null, new ParameterizedTypeReference>() { - }).getBody()); + if (isReply) { + tokensList.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%d&mid=%d&rid=%d", + jmsg.getUser().getUid(), jmsg.getMid(), jmsg.getRid()), + HttpMethod.GET, null, new ParameterizedTypeReference>() { + }).getBody()); + } else { + tokensList.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=gcm&uid=%s&mid=%s", + jmsg.getUser().getUid(), jmsg.getMid()), + HttpMethod.GET, null, new ParameterizedTypeReference>() { + }).getBody()); + } } + // GCM + List regids = tokensList.stream().filter(t -> t.getType().equals("gcm")) + .flatMap(t -> t.getTokens().stream()).collect(Collectors.toList()); if (!regids.isEmpty()) { try { ObjectMapper messageSerializer = new ObjectMapper(); @@ -156,18 +166,8 @@ public class Notifications implements AutoCloseable { } /*** WinPhone ***/ - final List urls = new ArrayList<>(); - if (isPM) { - urls.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=mpns&uid=%s", - pmTo), - HttpMethod.GET, null, new ParameterizedTypeReference>() { - }).getBody()); - } else { - urls.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=mpns&uid=%s&mid=%s", - jmsg.getUser().getUid(), jmsg.getMid()), - HttpMethod.GET, null, new ParameterizedTypeReference>() { - }).getBody()); - } + List urls = tokensList.stream().filter(t -> t.getType().equals("mpns")) + .flatMap(t -> t.getTokens().stream()).collect(Collectors.toList()); if (urls.isEmpty()) { logger.info("WNS: no recipients"); @@ -203,18 +203,8 @@ public class Notifications implements AutoCloseable { } /*** iOS ***/ - final List tokens = new ArrayList<>(); - if (isPM) { - tokens.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=apns&uid=%s", - pmTo), - HttpMethod.GET, null, new ParameterizedTypeReference>() { - }).getBody()); - } else { - tokens.addAll(rest.exchange(String.format("http://api.juick.com/notifications?type=apns&uid=%s&mid=%s", - jmsg.getUser().getUid(), jmsg.getMid()), - HttpMethod.GET, null, new ParameterizedTypeReference>() { - }).getBody()); - } + List tokens = tokensList.stream().filter(t -> t.getType().equals("mpns")) + .flatMap(t -> t.getTokens().stream()).collect(Collectors.toList()); if (!tokens.isEmpty()) { for (String token : tokens) { String payload = APNS.newPayload().alertTitle("@" + jmsg.getUser().getName()).alertBody(jmsg.getText()).build(); -- cgit v1.2.3