From 59d08c3fe59077238e7f7774be359a7966ed522c Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 12 Jan 2018 10:36:36 +0300 Subject: api: merge top component --- .../src/main/java/com/juick/api/TopManager.java | 41 ++++ .../java/com/juick/api/controllers/Messages.java | 21 -- .../src/main/java/com/juick/components/Top.java | 41 ---- .../NotificationsAppConfiguration.java | 11 - .../components/service/ApiMessagesService.java | 226 --------------------- 5 files changed, 41 insertions(+), 299 deletions(-) create mode 100644 juick-api/src/main/java/com/juick/api/TopManager.java delete mode 100644 juick-notifications/src/main/java/com/juick/components/Top.java delete mode 100644 juick-notifications/src/main/java/com/juick/components/service/ApiMessagesService.java diff --git a/juick-api/src/main/java/com/juick/api/TopManager.java b/juick-api/src/main/java/com/juick/api/TopManager.java new file mode 100644 index 00000000..c762aa83 --- /dev/null +++ b/juick-api/src/main/java/com/juick/api/TopManager.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2008-2017, Juick + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.juick.api; + +import com.juick.service.MessagesService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.inject.Inject; + +@Component +public class TopManager { + private static Logger logger = LoggerFactory.getLogger(TopManager.class); + @Inject + private MessagesService messagesService; + + @Scheduled(fixedRate = 120000) + public void updateTop() { + messagesService.getPopularCandidates().forEach(m -> { + logger.info("added {} to popular", m); + messagesService.setMessagePopular(m, 1); + }); + } +} diff --git a/juick-api/src/main/java/com/juick/api/controllers/Messages.java b/juick-api/src/main/java/com/juick/api/controllers/Messages.java index 5f00ee68..e16e46d5 100644 --- a/juick-api/src/main/java/com/juick/api/controllers/Messages.java +++ b/juick-api/src/main/java/com/juick/api/controllers/Messages.java @@ -178,25 +178,4 @@ public class Messages { } throw new HttpForbiddenException(); } - @ApiIgnore - @RequestMapping("/messages/top_candidates") - public List topCandidates() { - User visitor = UserUtils.getCurrentUser(); - if ((visitor.getUid() == 0) || !(visitor.getName().equals("juick"))) { - throw new HttpForbiddenException(); - } - return messagesService.getPopularCandidates(); - } - - @ApiIgnore - @RequestMapping("/messages/set_popular") - public Status doSetPopular( - @RequestParam(defaultValue = "0") int mid, - @RequestParam(defaultValue = "0") int popular) { - if (mid > 0) { - messagesService.setMessagePopular(mid, popular); - return Status.OK; - } - throw new HttpBadRequestException(); - } } diff --git a/juick-notifications/src/main/java/com/juick/components/Top.java b/juick-notifications/src/main/java/com/juick/components/Top.java deleted file mode 100644 index e09dad18..00000000 --- a/juick-notifications/src/main/java/com/juick/components/Top.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2008-2017, Juick - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package com.juick.components; - -import com.juick.service.MessagesService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import javax.inject.Inject; - -@Component -public class Top { - private static Logger logger = LoggerFactory.getLogger(Top.class); - @Inject - MessagesService messagesService; - - @Scheduled(fixedRate = 120000) - public void updateTop() { - messagesService.getPopularCandidates().stream().forEach(m -> { - logger.info("added {} to popular", m); - messagesService.setMessagePopular(m, 1); - }); - } -} diff --git a/juick-notifications/src/main/java/com/juick/components/configuration/NotificationsAppConfiguration.java b/juick-notifications/src/main/java/com/juick/components/configuration/NotificationsAppConfiguration.java index f7616fd1..19d56d59 100644 --- a/juick-notifications/src/main/java/com/juick/components/configuration/NotificationsAppConfiguration.java +++ b/juick-notifications/src/main/java/com/juick/components/configuration/NotificationsAppConfiguration.java @@ -2,10 +2,7 @@ package com.juick.components.configuration; import com.juick.components.CleanUp; import com.juick.components.Notifications; -import com.juick.components.Top; -import com.juick.components.service.ApiMessagesService; import com.juick.server.configuration.BaseWebConfiguration; -import com.juick.service.MessagesService; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.*; import org.springframework.http.client.ClientHttpRequestInterceptor; @@ -53,12 +50,4 @@ public class NotificationsAppConfiguration extends BaseWebConfiguration { public CleanUp cleanUp() { return new CleanUp(); } - @Bean - public Top top() { - return new Top(); - } - @Bean - public MessagesService messagesService() { - return new ApiMessagesService(rest()); - } } diff --git a/juick-notifications/src/main/java/com/juick/components/service/ApiMessagesService.java b/juick-notifications/src/main/java/com/juick/components/service/ApiMessagesService.java deleted file mode 100644 index ce07b7fe..00000000 --- a/juick-notifications/src/main/java/com/juick/components/service/ApiMessagesService.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.juick.components.service; - -import com.juick.Message; -import com.juick.Tag; -import com.juick.User; -import com.juick.server.helpers.ResponseReply; -import com.juick.service.BaseRestService; -import com.juick.service.MessagesService; -import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.*; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.UriComponentsBuilder; - -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; - -public class ApiMessagesService extends BaseRestService implements MessagesService { - public ApiMessagesService(RestTemplate rest) { - super(rest); - } - - @Override - public int createMessage(int uid, String txt, String attachment, Collection tags) { - return 0; - } - - @Override - public int createReply(int mid, int rid, int uid, String txt, String attachment) { - return 0; - } - - @Override - public int getReplyIDIncrement(int mid) { - return 0; - } - - @Override - public boolean recommendMessage(int mid, int vuid) { - return false; - } - - @Override - public boolean canViewThread(int mid, int uid) { - return false; - } - - @Override - public boolean isReadOnly(int mid) { - return false; - } - - @Override - public boolean isSubscribed(int uid, int mid) { - return false; - } - - @Override - public int getMessagePrivacy(int mid) { - return 0; - } - - @Override - public Message getMessage(int mid) { - return null; - } - - @Override - public Message getReply(int mid, int rid) { - return null; - } - - @Override - public User getMessageAuthor(int mid) { - return null; - } - - @Override - public List getMessageRecommendations(int mid) { - return null; - } - - @Override - public List getAll(int visitorUid, int before) { - return null; - } - - @Override - public List getTag(int tid, int visitorUid, int before, int cnt) { - return null; - } - - @Override - public List getTags(String tids, int visitorUid, int before, int cnt) { - return null; - } - - @Override - public List getPlace(int placeId, int visitorUid, int before) { - return null; - } - - @Override - public List getMyFeed(int uid, int before, boolean recommended) { - return null; - } - - @Override - public List getPrivate(int uid, int before) { - return null; - } - - @Override - public List getDiscussions(int uid, int before) { - return null; - } - - @Override - public List getRecommended(int uid, int before) { - return null; - } - - @Override - public List getPopular(int visitorUid, int before) { - return null; - } - - @Override - public List getPhotos(int visitorUid, int before) { - return null; - } - - @Override - public List getSearch(String search, int before) { - return null; - } - - @Override - public List getUserBlog(int uid, int privacy, int before) { - return null; - } - - @Override - public List getUserTag(int uid, int tid, int privacy, int before) { - return null; - } - - @Override - public List getUserBlogAtDay(int uid, int privacy, int daysback) { - return null; - } - - @Override - public List getUserBlogWithRecommendations(int uid, int privacy, int before) { - return null; - } - - @Override - public List getUserRecommendations(int uid, int before) { - return null; - } - - @Override - public List getUserPhotos(int uid, int privacy, int before) { - return null; - } - - @Override - public List getUserSearch(int UID, String search, int privacy, int before) { - return null; - } - - @Override - public List getMessages(Collection mids) { - return null; - } - - @Override - public List getReplies(int mid) { - return null; - } - - @Override - public boolean setMessagePopular(int mid, int popular) { - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON_UTF8); - return getRest().exchange(UriComponentsBuilder.fromHttpUrl("https://api.juick.com/messages/set_popular") - .queryParam("mid", mid) - .queryParam("popular", popular) - .build().toUriString(), HttpMethod.GET, new HttpEntity<>(headers), new ParameterizedTypeReference() { - }).getStatusCode().equals(HttpStatus.OK); - } - - @Override - public boolean setMessagePrivacy(int mid) { - return false; - } - - @Override - public boolean deleteMessage(int uid, int mid) { - return false; - } - - @Override - public List getLastMessages(int hours) { - return null; - } - - @Override - public List getLastReplies(int hours) { - return null; - } - - @Override - public List getNotifications(User user, LocalDateTime before) { - return null; - } - - @Override - public List getPopularCandidates() { - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON_UTF8); - return getRest().exchange("https://api.juick.com/messages/top_candidates", HttpMethod.GET, new HttpEntity<>(headers), new ParameterizedTypeReference>() { - }).getBody(); - } -} -- cgit v1.2.3