diff options
Diffstat (limited to 'juick-api')
-rw-r--r-- | juick-api/src/main/java/com/juick/api/controllers/Notifications.java | 12 | ||||
-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.java | 6 |
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)); } } |