From d90272c4a880cc7644fb168c41cec4e90801ff03 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Wed, 5 Sep 2018 11:37:28 +0300 Subject: ActivityStreams: separate endpoints for outbox and outbox pages --- .../com/juick/server/api/activity/Profile.java | 42 +++++++++++++++------- 1 file changed, 29 insertions(+), 13 deletions(-) (limited to 'juick-server/src/main/java/com/juick/server/api/activity/Profile.java') diff --git a/juick-server/src/main/java/com/juick/server/api/activity/Profile.java b/juick-server/src/main/java/com/juick/server/api/activity/Profile.java index 4a44db3b..0b8db1fc 100644 --- a/juick-server/src/main/java/com/juick/server/api/activity/Profile.java +++ b/juick-server/src/main/java/com/juick/server/api/activity/Profile.java @@ -55,40 +55,56 @@ public class Profile { } throw new HttpNotFoundException(); } - @GetMapping(value = "/u/{userName}/blog", produces = ActivityObject.CONTENT_TYPE) - public OrderedCollection getOutbox( - @PathVariable String userName, - @RequestParam(required = false, defaultValue = "0") int before) { + @GetMapping(value = "/u/{userName}/blog/toc", produces = ActivityObject.CONTENT_TYPE) + public OrderedCollection getOutbox(@PathVariable String userName) { User visitor = UserUtils.getCurrentUser(); User user = userService.getUserByName(userName); if (!user.isAnonymous()) { ServletUriComponentsBuilder uriComponentsBuilder = ServletUriComponentsBuilder.fromCurrentRequestUri(); OrderedCollection blog = new OrderedCollection(); blog.setId(uriComponentsBuilder.toUriString()); + blog.setTotalItems(userService.getStatsMessages(user.getUid())); + Link first = new Link(); + uriComponentsBuilder.path(String.format("/u/%s/blog", userName)); + first.setHref(uriComponentsBuilder.toUriString()); + blog.setFirst(first); + return blog; + } + throw new HttpNotFoundException(); + } + @GetMapping(value = "/u/{userName}/blog", produces = ActivityObject.CONTENT_TYPE) + public OrderedCollectionPage getOutboxPage(@PathVariable String userName, + @RequestParam(required = false, defaultValue = "0") int before) { + User visitor = UserUtils.getCurrentUser(); + User user = userService.getUserByName(userName); + if (!user.isAnonymous()) { + ServletUriComponentsBuilder uriComponentsBuilder = ServletUriComponentsBuilder.fromCurrentRequestUri(); List mids = messagesService.getUserBlog(user.getUid(), 0, before); List
articles = messagesService.getMessages(visitor, mids).stream().map(m -> { - Article article = new Article(); - article.setContent(m.getText()); - return article; + Article article = new Article(); + article.setPublished(m.getTimestamp()); + article.setContent(m.getText()); + return article; }).collect(Collectors.toList()); - OrderedCollectionPage first = new OrderedCollectionPage(); - first.setId(uriComponentsBuilder.toUriString()); Person person = new Person(); person.setName(user.getName()); - first.setOrderedItems(articles.stream().map(a -> { + OrderedCollectionPage page = new OrderedCollectionPage(); + page.setOrderedItems(articles.stream().map(a -> { Create create = new Create(); create.setActor(person); create.setObject(a); + create.setPublished(a.getPublished()); return create; }).collect(Collectors.toList())); int beforeNext = mids.stream().reduce((fst, second) -> second).orElse(0); if (beforeNext > 0) { Link next = new Link(); next.setHref(uriComponentsBuilder.queryParam("before", beforeNext).toUriString()); - first.setNext(next); + page.setNext(next); } - blog.setFirst(first); - return blog; + + page.setId(uriComponentsBuilder.toUriString()); + return page; } throw new HttpNotFoundException(); } -- cgit v1.2.3