aboutsummaryrefslogtreecommitdiff
path: root/juick-api
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2017-10-24 17:18:29 +0300
committerGravatar Vitaly Takmazov2017-10-24 22:34:41 +0300
commitde2cc2db73a5de42d9bfaeb92604f28abe2a328a (patch)
tree352a3d76fcbc987f068527ff043174308a666654 /juick-api
parent881a546bf7a56550eec1e38ce839f47a1cb1a750 (diff)
crosspost: refactoring
* spring-social * get tokens via service api
Diffstat (limited to 'juick-api')
-rw-r--r--juick-api/src/main/java/com/juick/api/controllers/Notifications.java12
-rw-r--r--juick-api/src/main/java/com/juick/api/controllers/Service.java (renamed from juick-api/src/main/java/com/juick/api/controllers/Subscriptions.java)29
-rw-r--r--juick-api/src/test/java/com/juick/api/tests/MessagesTests.java6
3 files changed, 32 insertions, 15 deletions
diff --git a/juick-api/src/main/java/com/juick/api/controllers/Notifications.java b/juick-api/src/main/java/com/juick/api/controllers/Notifications.java
index c08689aa..2a55844c 100644
--- a/juick-api/src/main/java/com/juick/api/controllers/Notifications.java
+++ b/juick-api/src/main/java/com/juick/api/controllers/Notifications.java
@@ -19,7 +19,7 @@ package com.juick.api.controllers;
import com.juick.Message;
import com.juick.Status;
-import com.juick.DeviceRegistration;
+import com.juick.ExternalToken;
import com.juick.User;
import com.juick.server.helpers.AnonymousUser;
import com.juick.server.util.HttpBadRequestException;
@@ -58,9 +58,9 @@ public class Notifications {
private User collectTokens(Integer uid) {
User user = userService.getUserByUID(uid).orElse(AnonymousUser.INSTANCE);
- pushQueriesService.getGCMRegID(uid).forEach(t -> user.getDevices().add(new DeviceRegistration("gcm", t)));
- pushQueriesService.getAPNSToken(uid).forEach(t -> user.getDevices().add(new DeviceRegistration("apns", t)));
- pushQueriesService.getMPNSURL(uid).forEach(t -> user.getDevices().add(new DeviceRegistration("mpns", t)));
+ pushQueriesService.getGCMRegID(uid).forEach(t -> user.getTokens().add(new ExternalToken(null, "gcm", t, null)));
+ pushQueriesService.getAPNSToken(uid).forEach(t -> user.getTokens().add(new ExternalToken(null, "apns", t, null)));
+ pushQueriesService.getMPNSURL(uid).forEach(t -> user.getTokens().add(new ExternalToken(null, "mpns", t, null)));
return user;
}
@@ -98,7 +98,7 @@ public class Notifications {
@RequestMapping(value = "/notifications", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Status doDelete(
- @RequestBody List<DeviceRegistration> list) throws IOException {
+ @RequestBody List<ExternalToken> list) throws IOException {
User visitor = UserUtils.getCurrentUser();
// FIXME: it is possible to delete other user's tokens
if ((visitor.getUid() == 0) || !(visitor.getName().equals("juick"))) {
@@ -125,7 +125,7 @@ public class Notifications {
@RequestMapping(value = "/notifications", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Status doPut(
- @RequestBody List<DeviceRegistration> list) throws IOException {
+ @RequestBody List<ExternalToken> list) throws IOException {
User visitor = UserUtils.getCurrentUser();
if (visitor.getUid() == 0) {
throw new HttpForbiddenException();
diff --git a/juick-api/src/main/java/com/juick/api/controllers/Subscriptions.java b/juick-api/src/main/java/com/juick/api/controllers/Service.java
index 06ea9fcf..b3516391 100644
--- a/juick-api/src/main/java/com/juick/api/controllers/Subscriptions.java
+++ b/juick-api/src/main/java/com/juick/api/controllers/Service.java
@@ -17,32 +17,38 @@
package com.juick.api.controllers;
+import com.juick.ExternalToken;
import com.juick.Message;
import com.juick.User;
import com.juick.server.util.HttpBadRequestException;
import com.juick.server.util.HttpForbiddenException;
import com.juick.server.util.UserUtils;
+import com.juick.service.CrosspostService;
import com.juick.service.MessagesService;
import com.juick.service.SubscriptionService;
+import com.juick.service.UserService;
import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
import javax.inject.Inject;
import java.io.IOException;
import java.util.List;
/**
- * Created by vitalyster on 24.10.2016.
+ * TODO: configure spring-security to allow only admin role
*/
+@ApiIgnore
@RestController
-public class Subscriptions {
+public class Service {
@Inject
private SubscriptionService subscriptionService;
@Inject
private MessagesService messagesService;
+ @Inject
+ private CrosspostService crosspostService;
+ @Inject
+ private UserService userService;
@RequestMapping(value = "/subscriptions", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public List<User> doGet(
@@ -63,4 +69,15 @@ public class Subscriptions {
}
throw new HttpBadRequestException();
}
+ @GetMapping("/tokens")
+ public User getTokensForUser(@RequestParam(defaultValue = "0") int uid) {
+ User visitor = UserUtils.getCurrentUser();
+ if ((visitor.getUid() == 0) && !(visitor.getName().equals("juick"))) {
+ throw new HttpForbiddenException();
+ }
+ User user = userService.getUserByUID(uid).orElseThrow(IllegalStateException::new);
+ crosspostService.getTwitterToken(uid).ifPresent(
+ t -> user.getTokens().add(t));
+ return user;
+ }
}
diff --git a/juick-api/src/test/java/com/juick/api/tests/MessagesTests.java b/juick-api/src/test/java/com/juick/api/tests/MessagesTests.java
index b626b0e9..906e8713 100644
--- a/juick-api/src/test/java/com/juick/api/tests/MessagesTests.java
+++ b/juick-api/src/test/java/com/juick/api/tests/MessagesTests.java
@@ -19,7 +19,7 @@ package com.juick.api.tests;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.juick.DeviceRegistration;
+import com.juick.ExternalToken;
import com.juick.Message;
import com.juick.Tag;
import com.juick.User;
@@ -247,7 +247,7 @@ public class MessagesTests extends AbstractJUnit4SpringContextTests {
String juickPassword = "demo";
int juickId = userService.createUser(juickName, juickPassword);
String token = "123456";
- DeviceRegistration registration = new DeviceRegistration("apns", token);
+ ExternalToken registration = new ExternalToken(null, "apns", token, null);
mockMvc.perform(put("/notifications").with(httpBasic(ugnichName, ugnichPassword))
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(jsonMapper.writeValueAsBytes(Collections.singletonList(registration))))
@@ -260,6 +260,6 @@ public class MessagesTests extends AbstractJUnit4SpringContextTests {
List<User> user = jsonMapper.readValue(result.getResponse().getContentAsString(),
new TypeReference<List<User>>() {
});
- assertThat(user.get(0).getDevices().get(0).getToken(), equalTo(token));
+ assertThat(user.get(0).getTokens().get(0).getToken(), equalTo(token));
}
}