aboutsummaryrefslogtreecommitdiff
path: root/juick-api/src/main/java/com/juick/api/Notifications.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-api/src/main/java/com/juick/api/Notifications.java')
-rw-r--r--juick-api/src/main/java/com/juick/api/Notifications.java17
1 files changed, 17 insertions, 0 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 a0c9cae9..707df6e4 100644
--- a/juick-api/src/main/java/com/juick/api/Notifications.java
+++ b/juick-api/src/main/java/com/juick/api/Notifications.java
@@ -1,5 +1,6 @@
package com.juick.api;
+import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.juick.Message;
import com.juick.User;
@@ -7,8 +8,10 @@ import com.juick.server.MessagesQueries;
import com.juick.server.PushQueries;
import com.juick.server.SubscriptionsQueries;
import com.juick.server.UserQueries;
+import com.juick.server.helpers.TokensList;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.jdbc.core.JdbcTemplate;
+import spark.utils.IOUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -89,4 +92,18 @@ public class Notifications {
}
}
}
+
+ public void doDelete(HttpServletRequest request, HttpServletResponse response, int vuid) throws IOException {
+ User visitor = UserQueries.getUserByUID(jdbc, vuid).orElse(new User());
+ if ((visitor.getUid() == 0) || !(visitor.getName().equals("juick"))) {
+ response.sendError(403);
+ return;
+ }
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
+ mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT);
+ TokensList list = mapper.readValue(IOUtils.toString(request.getInputStream()), TokensList.class);
+ list.getTokens().forEach(t -> PushQueries.deleteAPNSToken(jdbc, t));
+ }
}