aboutsummaryrefslogtreecommitdiff
path: root/juick-rss
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-02-18 01:07:19 +0300
committerGravatar Vitaly Takmazov2018-02-18 01:07:19 +0300
commit69e7a6af07742a075716fa9c30087c68170f6dc6 (patch)
treeb76672c35b036a0b006dce096ec817e03e4c4b44 /juick-rss
parentbfab7023d8e635de6189e0f2bea6dad2c8ddd7b6 (diff)
server: merge rss
Diffstat (limited to 'juick-rss')
-rw-r--r--juick-rss/build.gradle28
-rw-r--r--juick-rss/src/main/java/com/juick/rss/MessagesView.java143
-rw-r--r--juick-rss/src/main/java/com/juick/rss/RepliesView.java101
-rw-r--r--juick-rss/src/main/java/com/juick/rss/configuration/RssAppConfiguration.java34
-rw-r--r--juick-rss/src/main/java/com/juick/rss/configuration/RssInitializer.java56
-rw-r--r--juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java47
-rw-r--r--juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java74
-rw-r--r--juick-rss/src/main/java/com/juick/rss/extension/JuickModule.java33
-rw-r--r--juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java70
-rw-r--r--juick-rss/src/main/java/com/juick/rss/extension/JuickModuleImpl.java54
-rw-r--r--juick-rss/src/main/java/com/juick/rss/extension/JuickModuleParser.java42
-rw-r--r--juick-rss/src/main/resources/rome.properties2
-rw-r--r--juick-rss/src/main/webapp/WEB-INF/web.xml4
-rw-r--r--juick-rss/src/test/java/com/juick/rss/tests/RSSTests.java165
14 files changed, 0 insertions, 853 deletions
diff --git a/juick-rss/build.gradle b/juick-rss/build.gradle
deleted file mode 100644
index 44f2334e..00000000
--- a/juick-rss/build.gradle
+++ /dev/null
@@ -1,28 +0,0 @@
-apply plugin: 'java'
-apply plugin: 'war'
-apply plugin: 'org.akhikhl.gretty'
-
-dependencies {
- compile project(':juick-server-jdbc')
- compile project(':juick-server-web')
- compile 'com.rometools:rome:1.9.0'
- compile 'com.rometools:rome-modules:1.9.0'
- providedRuntime 'mysql:mysql-connector-java:5.1.40'
-
- testCompile "junit:junit:${rootProject.junitVersion}"
- testCompile "org.hamcrest:hamcrest-all:${rootProject.hamcrestVersion}"
- testCompile "org.mockito:mockito-core:${rootProject.mockitoVersion}"
- testCompile "org.springframework:spring-test:${rootProject.springFrameworkVersion}"
-}
-
-compileJava.options.encoding = 'UTF-8'
-
-gretty {
- httpPort = 8080
- contextPath = '/'
- servletContainer = 'tomcat8'
-}
-
-configurations {
- all*.exclude module: 'commons-logging'
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/MessagesView.java b/juick-rss/src/main/java/com/juick/rss/MessagesView.java
deleted file mode 100644
index d560b4e9..00000000
--- a/juick-rss/src/main/java/com/juick/rss/MessagesView.java
+++ /dev/null
@@ -1,143 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss;
-
-import com.juick.Message;
-import com.juick.User;
-import com.juick.rss.extension.JuickModule;
-import com.juick.rss.extension.JuickModuleImpl;
-import com.juick.util.MessageUtils;
-import com.rometools.modules.atom.modules.AtomLinkModule;
-import com.rometools.modules.atom.modules.AtomLinkModuleImpl;
-import com.rometools.modules.mediarss.MediaEntryModuleImpl;
-import com.rometools.modules.mediarss.MediaModule;
-import com.rometools.modules.mediarss.MediaModuleImpl;
-import com.rometools.modules.mediarss.types.MediaContent;
-import com.rometools.modules.mediarss.types.Metadata;
-import com.rometools.modules.mediarss.types.Thumbnail;
-import com.rometools.modules.mediarss.types.UrlReference;
-import com.rometools.rome.feed.atom.Link;
-import com.rometools.rome.feed.rss.*;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-public class MessagesView extends AbstractRssFeedView {
-
- private static final Logger logger = LoggerFactory.getLogger(MessagesView.class);
-
- @Override
- protected List<Item> buildFeedItems(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
- List<Message> msgs = (List<Message>)model.get("messages");
- return msgs.stream().map(this::createRssItem).collect(Collectors.toList());
- }
-
- @Override
- protected void buildFeedMetadata(Map<String, Object> model, Channel feed, HttpServletRequest request) {
- Object userObj = model.get("user");
- if (userObj != null) {
- User user = (User) userObj;
- feed.setDescription(String.format("The latest messages by @%s at Juick", user.getName()));
- String title = String.format("%s - Juick", user.getName());
- feed.setTitle(title);
- String link = String.format("http://juick.com/%s/", user.getName());
- feed.setLink(link);
- Image rssImage = new Image();
- rssImage.setUrl(String.format("http://juick.com/a/%d.png", user.getUid()));
- rssImage.setTitle(title);
- rssImage.setLink(link);
- feed.setImage(rssImage);
- String href = String.format("http://rss.juick.com/%s/blog", user.getName());
- AtomLinkModule atomLinkModule = new AtomLinkModuleImpl();
- Link atomLink = new Link();
- atomLink.setHref(href);
- atomLink.setType("application/rss+xml");
- atomLink.setRel("self");
- atomLinkModule.setLinks(Collections.singletonList(atomLink));
-
- feed.getModules().add(atomLinkModule);
- } else {
- feed.setDescription("The latest messages at Juick");
- feed.setLink("http://juick.com/");
- feed.setTitle("Juick");
- }
-
- MediaModule mediaModule = new MediaModuleImpl();
- feed.getModules().add(mediaModule);
-
-
- }
-
- private Item createRssItem(Message msg) {
- Item item = new Item();
- String messageUrl = String.format("http://juick.com/%s/%d", msg.getUser().getName(), msg.getMid());
- String messageTitle = String.format("@%s: %s", msg.getUser().getName(), msg.getTagsString());
- boolean isCode = msg.getTags().stream().anyMatch(t -> t.getName().equals("code"));
- String messageDescription = isCode ? MessageUtils.formatMessageCode(StringUtils.defaultString(msg.getText()))
- : MessageUtils.formatMessage(StringUtils.defaultString(msg.getText()));
- item.setLink(messageUrl);
- //item.setGuid(messageUrl);
- item.setTitle(messageTitle);
- Description description = new Description();
- description.setType("text/html");
- description.setValue(messageDescription);
- item.setDescription(description);
- item.setPubDate(Date.from(msg.getTimestamp()));
- item.setComments(messageUrl);
- msg.getTags().stream().map(t -> {
- Category category = new Category();
- category.setValue(t.getName());
- return category;
- }).forEach(c -> item.getCategories().add(c));
- JuickModule juickModule = new JuickModuleImpl();
- juickModule.setUid(msg.getUser().getUid());
- item.getModules().add(juickModule);
- if (StringUtils.isNotEmpty(msg.getAttachmentType())) {
- String type = msg.getAttachmentType().equals("jpg") ? "image/jpeg" : "image/png";
- MediaEntryModuleImpl module = new MediaEntryModuleImpl();
- try {
- UrlReference reference = new UrlReference(msg.getAttachment().getUrl());
- MediaContent mediaContent = new MediaContent(reference);
- mediaContent.setType(type);
- Metadata metadata = new Metadata();
- metadata.setThumbnail(new Thumbnail[]{new Thumbnail(new URI(msg.getPhoto().getThumbnail()))});
- module.setMetadata(metadata);
- module.setMediaContents(new MediaContent[]{mediaContent});
- item.getModules().add(module);
- } catch (URISyntaxException e) {
- logger.error("Invalid URI", e);
- }
-
- }
- return item;
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/RepliesView.java b/juick-rss/src/main/java/com/juick/rss/RepliesView.java
deleted file mode 100644
index 9db61049..00000000
--- a/juick-rss/src/main/java/com/juick/rss/RepliesView.java
+++ /dev/null
@@ -1,101 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss;
-
-import com.juick.server.helpers.ResponseReply;
-import com.juick.util.MessageUtils;
-import com.rometools.modules.mediarss.MediaEntryModuleImpl;
-import com.rometools.modules.mediarss.MediaModule;
-import com.rometools.modules.mediarss.MediaModuleImpl;
-import com.rometools.modules.mediarss.types.MediaContent;
-import com.rometools.modules.mediarss.types.Metadata;
-import com.rometools.modules.mediarss.types.Thumbnail;
-import com.rometools.modules.mediarss.types.UrlReference;
-import com.rometools.rome.feed.rss.Channel;
-import com.rometools.rome.feed.rss.Description;
-import com.rometools.rome.feed.rss.Item;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-public class RepliesView extends AbstractRssFeedView {
-
- private static final Logger logger = LoggerFactory.getLogger(RepliesView.class);
-
- @Override
- protected List<Item> buildFeedItems(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
- List<ResponseReply> msgs = (List<ResponseReply>)model.get("messages");
- return msgs.stream().map(this::createRssItem).collect(Collectors.toList());
- }
-
- @Override
- protected void buildFeedMetadata(Map<String, Object> model, Channel feed, HttpServletRequest request) {
- feed.setTitle("Juick");
- feed.setLink("http://juick.com/");
- feed.setDescription("The latest comments at Juick");
- MediaModule mediaModule = new MediaModuleImpl();
- feed.getModules().add(mediaModule);
- }
-
- private Item createRssItem(ResponseReply msg) {
- Item item = new Item();
- String messageUrl = String.format("http://juick.com/%d#%d", msg.getMid(), msg.getRid());
- String messageTitle = String.format("@%s:", msg.getUname());
- String messageDescription = MessageUtils.formatMessage(msg.getDescription());
- item.setLink(messageUrl);
- //item.setGuid(messageUrl);
- item.setTitle(messageTitle);
- Description description = new Description();
- description.setType("text/html");
- description.setValue(messageDescription);
- item.setDescription(description);
- item.setPubDate(msg.getPubDate());
- if (StringUtils.isNotEmpty(msg.getAttachmentType())) {
- String type = msg.getAttachmentType().equals("jpg") ? "image/jpeg" : "image/png";
- MediaEntryModuleImpl module = new MediaEntryModuleImpl();
- try {
- UrlReference reference = new UrlReference(
- String.format("http://i.juick.com/photos-1024/%d-%d.%s", msg.getMid(), msg.getRid(), type));
- MediaContent mediaContent = new MediaContent(reference);
- mediaContent.setType(type);
- Metadata metadata = new Metadata();
- metadata.setThumbnail(new Thumbnail[]{new Thumbnail(
- new URI(String.format("http://i.juick.com/ps/%d-%d.%s", msg.getMid(), msg.getRid(), type)))});
- module.setMetadata(metadata);
- module.setMediaContents(new MediaContent[]{mediaContent});
- item.getModules().add(module);
- } catch (URISyntaxException e) {
- logger.error("Invalid URI", e);
- }
-
- }
- return item;
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/configuration/RssAppConfiguration.java b/juick-rss/src/main/java/com/juick/rss/configuration/RssAppConfiguration.java
deleted file mode 100644
index 2069b14e..00000000
--- a/juick-rss/src/main/java/com/juick/rss/configuration/RssAppConfiguration.java
+++ /dev/null
@@ -1,34 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.configuration;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-
-import javax.inject.Inject;
-
-/**
- * Created by aalexeev on 11/12/16.
- */
-@Configuration
-@PropertySource("classpath:juick.conf")
-public class RssAppConfiguration {
- @Inject
- private Environment env;
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/configuration/RssInitializer.java b/juick-rss/src/main/java/com/juick/rss/configuration/RssInitializer.java
deleted file mode 100644
index 617da288..00000000
--- a/juick-rss/src/main/java/com/juick/rss/configuration/RssInitializer.java
+++ /dev/null
@@ -1,56 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.configuration;
-
-import org.apache.commons.codec.CharEncoding;
-import org.springframework.web.filter.CharacterEncodingFilter;
-import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
-
-import javax.servlet.Filter;
-
-/**
- * Created by vt on 09/02/16.
- */
-public class RssInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
-
- @Override
- protected Class<?>[] getRootConfigClasses() {
- return new Class<?>[]{RssAppConfiguration.class};
- }
-
- @Override
- protected Class<?>[] getServletConfigClasses() {
- return new Class<?>[]{RssMvcConfiguration.class};
- }
-
- @Override
- protected String[] getServletMappings() {
- return new String[]{"/"};
- }
-
- @Override
- protected Filter[] getServletFilters() {
- CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(CharEncoding.UTF_8);
- return new Filter[]{characterEncodingFilter};
- }
-
- @Override
- protected String getServletName() {
- return "RSS dispatcher servlet";
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java b/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java
deleted file mode 100644
index c9d69f99..00000000
--- a/juick-rss/src/main/java/com/juick/rss/configuration/RssMvcConfiguration.java
+++ /dev/null
@@ -1,47 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.configuration;
-
-import com.juick.rss.MessagesView;
-import com.juick.rss.RepliesView;
-import com.juick.server.configuration.BaseWebConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.view.BeanNameViewResolver;
-import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
-
-/**
- * Created by vitalyster on 28.06.2016.
- */
-@Configuration
-@ComponentScan(basePackages = {"com.juick.rss"})
-public class RssMvcConfiguration extends BaseWebConfiguration {
- @Bean
- public BeanNameViewResolver beanNameViewResolver() {
- return new BeanNameViewResolver();
- }
- @Bean
- AbstractRssFeedView messages() {
- return new MessagesView();
- }
- @Bean
- AbstractRssFeedView replies() {
- return new RepliesView();
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java b/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java
deleted file mode 100644
index 7555f128..00000000
--- a/juick-rss/src/main/java/com/juick/rss/controllers/FeedsController.java
+++ /dev/null
@@ -1,74 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.controllers;
-
-import com.juick.User;
-import com.juick.server.util.HttpBadRequestException;
-import com.juick.service.MessagesService;
-import com.juick.service.UserService;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-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.servlet.ModelAndView;
-
-import javax.inject.Inject;
-import java.util.List;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-@Controller
-public class FeedsController {
-
- @Inject
- private MessagesService messagesService;
- @Inject
- private UserService userService;
-
- @RequestMapping(value = "/{userName}/blog", method = RequestMethod.GET)
- public ModelAndView getBlog(@PathVariable String userName) {
- User user = userService.getUserByName(userName);
- if (user.getUid() > 0) {
- List<Integer> mids = messagesService.getUserBlog(user.getUid(), 0, 0);
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName("messages");
- modelAndView.addObject("user", user);
- modelAndView.addObject("messages", messagesService.getMessages(mids));
- return modelAndView;
- }
- throw new HttpBadRequestException();
- }
-
- @RequestMapping(value = "/", method = RequestMethod.GET)
- public ModelAndView getLast(@RequestParam(value = "hours", required = false, defaultValue = "0") Integer hours) {
- List<Integer> mids = messagesService.getLastMessages(hours);
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName("messages");
- modelAndView.addObject("messages", messagesService.getMessages(mids));
- return modelAndView;
- }
- @RequestMapping(value = "/comments", method = RequestMethod.GET)
- public ModelAndView getLastReplies(@RequestParam(value = "hours", required = false, defaultValue = "0") Integer hours) {
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName("replies");
- modelAndView.addObject("messages", messagesService.getLastReplies(hours));
- return modelAndView;
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/extension/JuickModule.java b/juick-rss/src/main/java/com/juick/rss/extension/JuickModule.java
deleted file mode 100644
index d8c1ef1e..00000000
--- a/juick-rss/src/main/java/com/juick/rss/extension/JuickModule.java
+++ /dev/null
@@ -1,33 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.extension;
-
-import com.rometools.rome.feed.module.Module;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-public interface JuickModule extends Module {
-
- String URI = "http://juick.com/";
-
- Integer getUid();
-
- void setUid(Integer uid);
-
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java b/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java
deleted file mode 100644
index b38c2ab8..00000000
--- a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleGenerator.java
+++ /dev/null
@@ -1,70 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.extension;
-
-import com.rometools.rome.feed.module.Module;
-import com.rometools.rome.io.ModuleGenerator;
-import org.jdom2.Element;
-import org.jdom2.Namespace;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * Created by vt on 13/12/2016.
- */
-public class JuickModuleGenerator implements ModuleGenerator {
-
- private static final Namespace JUICK_NS = Namespace.getNamespace("juick", JuickModule.URI);
-
- @Override
- public String getNamespaceUri() {
- return JuickModule.URI;
- }
-
- private static final Set NAMESPACES;
-
- static {
- Set nss = new HashSet();
- nss.add(JUICK_NS);
- NAMESPACES = Collections.unmodifiableSet(nss);
- }
-
- @Override
- public Set getNamespaces() {
- return NAMESPACES;
- }
-
- @Override
- public void generate(Module module, Element element) {
- // this is not necessary, it is done to avoid the namespace definition in every item.
- Element root = element;
- while (root.getParent()!=null && root.getParent() instanceof Element) {
- root = (Element) element.getParent();
- }
- root.addNamespaceDeclaration(JUICK_NS);
-
- JuickModule juickModule = (JuickModule) module;
- if (juickModule.getUid() > 0) {
- Element user = new Element("user", JUICK_NS);
- user.setAttribute("uid", String.valueOf(juickModule.getUid()), JUICK_NS);
- element.addContent(user);
- }
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleImpl.java b/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleImpl.java
deleted file mode 100644
index c2ae1fbe..00000000
--- a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleImpl.java
+++ /dev/null
@@ -1,54 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.extension;
-
-import com.rometools.rome.feed.CopyFrom;
-import com.rometools.rome.feed.module.ModuleImpl;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-public class JuickModuleImpl extends ModuleImpl implements JuickModule {
-
- private Integer uid;
-
- public JuickModuleImpl() {
- super(JuickModule.class, JuickModule.URI);
- }
-
- @Override
- public Integer getUid() {
- return uid;
- }
-
- @Override
- public void setUid(Integer uid) {
- this.uid = uid;
- }
-
- @Override
- public Class<? extends CopyFrom> getInterface() {
- return JuickModule.class;
- }
-
- @Override
- public void copyFrom(CopyFrom obj) {
- JuickModule juickModule = (JuickModule) obj;
- setUid(juickModule.getUid());
- }
-}
diff --git a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleParser.java b/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleParser.java
deleted file mode 100644
index a11e50b5..00000000
--- a/juick-rss/src/main/java/com/juick/rss/extension/JuickModuleParser.java
+++ /dev/null
@@ -1,42 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.extension;
-
-import com.rometools.rome.feed.module.Module;
-import com.rometools.rome.io.ModuleParser;
-import org.apache.commons.lang3.math.NumberUtils;
-import org.jdom2.Element;
-
-import java.util.Locale;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-public class JuickModuleParser implements ModuleParser {
- @Override
- public String getNamespaceUri() {
- return JuickModule.URI;
- }
-
- @Override
- public Module parse(Element element, Locale locale) {
- JuickModuleImpl juickModule = new JuickModuleImpl();
- juickModule.setUid(NumberUtils.toInt(element.getAttributeValue("uid", JuickModule.URI), 0));
- return juickModule;
- }
-}
diff --git a/juick-rss/src/main/resources/rome.properties b/juick-rss/src/main/resources/rome.properties
deleted file mode 100644
index e57f6391..00000000
--- a/juick-rss/src/main/resources/rome.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rss_2.0.item.ModuleParser.classes=com.juick.rss.extension.JuickModuleParser
-rss_2.0.item.ModuleGenerator.classes=com.juick.rss.extension.JuickModuleGenerator \ No newline at end of file
diff --git a/juick-rss/src/main/webapp/WEB-INF/web.xml b/juick-rss/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 7e1c30d0..00000000
--- a/juick-rss/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
-
-</web-app>
diff --git a/juick-rss/src/test/java/com/juick/rss/tests/RSSTests.java b/juick-rss/src/test/java/com/juick/rss/tests/RSSTests.java
deleted file mode 100644
index 7c356771..00000000
--- a/juick-rss/src/test/java/com/juick/rss/tests/RSSTests.java
+++ /dev/null
@@ -1,165 +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 <http://www.gnu.org/licenses/>.
- */
-
-package com.juick.rss.tests;
-
-import com.juick.Message;
-import com.juick.Tag;
-import com.juick.User;
-import com.juick.rss.configuration.RssAppConfiguration;
-import com.juick.rss.configuration.RssMvcConfiguration;
-import com.juick.service.MessagesService;
-import com.juick.service.TagService;
-import com.juick.service.UserService;
-import org.apache.commons.text.RandomStringGenerator;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import static org.mockito.Mockito.when;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
-
-/**
- * Created by vitalyster on 13.12.2016.
- */
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration
-@WebAppConfiguration
-public class RSSTests {
- @Configuration
- @Import(value = {RssMvcConfiguration.class, RssAppConfiguration.class})
- static class Config {
- @Bean
- @Primary
- MessagesService messagesService() {
- return Mockito.mock(MessagesService.class);
- }
-
- @Bean
- @Primary
- UserService userService() {
- return Mockito.mock(UserService.class);
- }
-
- @Bean
- @Primary
- TagService tagService() {
- return Mockito.mock(TagService.class);
- }
- }
-
- private MockMvc mockMvc;
- @Inject
- private WebApplicationContext webApplicationContext;
-
- @Inject
- private MessagesService messagesService;
- @Inject
- private UserService userService;
- @Inject
- private TagService tagService;
-
- private User ugnich, freefd;
- String ugnichName, ugnichPassword, freefdName, freefdPassword;
-
- final static RandomStringGenerator generator = new RandomStringGenerator.Builder().withinRange('a', 'z').build();
-
- private static Message getMessage(final User user, final String messageText) {
- Message msg = new Message();
-
- msg.setMid(1);
- msg.setUser(user);
- msg.setText(messageText == null ? generator.generate(24) : messageText);
- msg.setTags(Collections.singletonList(new Tag(generator.generate(4))));
-
- return msg;
- }
-
- private static User getUser(final int uid, final String name, final String password) {
- User user = new User();
-
- user.setName(name);
- user.setUid(uid);
- user.setCredentials(password);
- user.setBanned(false);
-
- return user;
- }
-
- @Before
- public void setUp() {
- mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
- .dispatchOptions(true)
- .build();
- ugnichName = "ugnich";
- ugnichPassword = "MyPassw0rd!";
- freefdName = "freefd";
- freefdPassword = "MyPassw0rd!";
-
- ugnich = getUser(1, ugnichName, ugnichPassword);
- freefd = getUser(2, freefdName, freefdPassword);
-
- List<String> users = new ArrayList<>(2);
- users.add(ugnichName);
- users.add(freefdName);
-
- when(userService.getUsersByName(users))
- .thenReturn(Arrays.asList(ugnich, freefd));
- when(userService.getUserByName(ugnichName))
- .thenReturn(ugnich);
- when(userService.getFullyUserByName(ugnichName))
- .thenReturn(ugnich);
- when(userService.getUserByName(null))
- .thenReturn(new User());
- }
-
- @Test
- public void lastMessagesTest() throws Exception {
- String msgText = "Привет, я - Угнич";
-
- Message msg = getMessage(ugnich, msgText);
-
- when(messagesService.getMyFeed(1, 0, false))
- .thenReturn(Collections.singletonList(1));
- when(messagesService.getMessages(Collections.singletonList(1)))
- .thenReturn(Collections.singletonList(msg));
-
- mockMvc.perform(
- get("/"))
- .andExpect(status().isOk())
- .andExpect(content().contentType("application/rss+xml"))
- .andExpect(xpath("/rss/channel/description").string("The latest messages at Juick"));
- }
-}