/* * Copyright (C) 2008-2020, 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.www.rss; import com.juick.model.User; import com.juick.util.HttpNotFoundException; import com.juick.service.MessagesService; import com.juick.service.UserService; import io.swagger.v3.oas.annotations.Parameter; import org.springframework.core.convert.ConversionFailedException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.inject.Inject; import java.util.List; /** * Created by vitalyster on 13.12.2016. */ @Controller public class Feeds { @Inject private MessagesService messagesService; @Inject private UserService userService; public enum FeedType { blog, feed } @GetMapping("/rss/{userName}/{feedType}") public ModelAndView getBlog(@Parameter(hidden = true) User visitor, @PathVariable String userName, @PathVariable FeedType feedType) { User user = userService.getUserByName(userName); if (!user.isAnonymous() && !user.isBanned()) { List mids = feedType == FeedType.blog ? messagesService.getUserBlog(user.getUid(), 0, 0) : messagesService.getUserBlogWithRecommendations(user, visitor, 0, 0); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("messagesView"); modelAndView.addObject("user", user); modelAndView.addObject("feedType", feedType.name()); modelAndView.addObject("messages", messagesService.getMessages(visitor.getUid(), mids)); return modelAndView; } throw new HttpNotFoundException(); } @GetMapping("/rss/") public ModelAndView getLast( @Parameter(hidden = true) User visitor, @RequestParam(value = "hours", required = false, defaultValue = "0") Integer hours) { List mids = messagesService.getLastMessages(hours); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("messagesView"); modelAndView.addObject("user", visitor); modelAndView.addObject("messages", messagesService.getMessages(visitor.getUid(), mids)); return modelAndView; } @GetMapping("/rss/comments") public ModelAndView getLastReplies(@RequestParam(value = "hours", required = false, defaultValue = "0") Integer hours) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("repliesView"); modelAndView.addObject("messages", messagesService.getLastReplies(hours)); return modelAndView; } // wrong feed type @ExceptionHandler(ConversionFailedException.class) public ResponseEntity notFoundAction() { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } }