diff options
Diffstat (limited to 'juick-api/src/main/java/com/juick/api')
-rw-r--r-- | juick-api/src/main/java/com/juick/api/Notifications.java | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/juick-api/src/main/java/com/juick/api/Notifications.java b/juick-api/src/main/java/com/juick/api/Notifications.java index 7cf27fc1..2c846d6f 100644 --- a/juick-api/src/main/java/com/juick/api/Notifications.java +++ b/juick-api/src/main/java/com/juick/api/Notifications.java @@ -1,8 +1,11 @@ package com.juick.api; import com.fasterxml.jackson.databind.ObjectMapper; +import com.juick.Message; import com.juick.User; +import com.juick.server.MessagesQueries; import com.juick.server.PushQueries; +import com.juick.server.SubscriptionsQueries; import com.juick.server.UserQueries; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.core.JdbcTemplate; @@ -11,12 +14,15 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; +import java.util.stream.Collectors; /** * Created by vitalyster on 24.10.2016. */ public class Notifications { JdbcTemplate jdbc; + ObjectMapper mapper = new ObjectMapper(); + public Notifications(JdbcTemplate jdbc) { this.jdbc = jdbc; } @@ -34,10 +40,48 @@ public class Notifications { switch (type) { case "gcm": List<String> tokens = PushQueries.getAndroidRegID(jdbc, uid); - ObjectMapper mapper = new ObjectMapper(); Main.replyJSON(request, response, mapper.writeValueAsString(tokens)); + case "apns": + List<String> apnsTokens = PushQueries.getAPNSToken(jdbc, uid); + Main.replyJSON(request, response, mapper.writeValueAsString(apnsTokens)); + case "mpns": + List<String> mpnsTokens = PushQueries.getWinPhoneURL(jdbc, uid); + Main.replyJSON(request, response, mapper.writeValueAsString(mpnsTokens)); + default: + response.sendError(400); + return; } + } else { + if (mid > 0) { + Message msg = MessagesQueries.getMessage(jdbc, mid); + if (msg != null) { + List<User> users; + if (msg.getRID() > 0) { + users = SubscriptionsQueries.getUsersSubscribedToComments(jdbc, mid, msg.getUser().getUID()); + } else { + users = SubscriptionsQueries.getSubscribedUsers(jdbc, msg.getUser().getUID(), mid); + } + + List<Integer> uids = users.stream().map(User::getUID).collect(Collectors.toList()); + + switch (type) { + case "gcm": + List<String> tokens = PushQueries.getAndroidTokens(jdbc, uids); + Main.replyJSON(request, response, mapper.writeValueAsString(tokens)); + case "apns": + List<String> apnsTokens = PushQueries.getAPNSTokens(jdbc, uids); + Main.replyJSON(request, response, mapper.writeValueAsString(apnsTokens)); + case "mpns": + List<String> mpnsTokens = PushQueries.getWindowsTokens(jdbc, uids); + Main.replyJSON(request, response, mapper.writeValueAsString(mpnsTokens)); + default: + response.sendError(400); + return; + } + } + } } + response.sendError(400); } } |