diff -r 0a2ad22ac656 -r 94f174d591ab src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt --- a/src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt Thu May 13 18:01:56 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt Thu May 13 19:31:09 2021 +0200 @@ -28,24 +28,39 @@ import de.uapcore.lightpit.AbstractServlet import de.uapcore.lightpit.HttpRequest import de.uapcore.lightpit.dao.DataAccessObject -import de.uapcore.lightpit.entities.Issue import de.uapcore.lightpit.util.IssueFilter import de.uapcore.lightpit.util.IssueSorter +import de.uapcore.lightpit.util.SpecificFilter import de.uapcore.lightpit.viewmodel.IssueFeed +import de.uapcore.lightpit.viewmodel.ProjectFeed import javax.servlet.annotation.WebServlet @WebServlet(urlPatterns = ["/feed/*"]) class FeedServlet : AbstractServlet() { init { - get("/issues.rss", this::issues) + get("/projects.rss", this::projects) + get("/%project/issues.rss", this::issues) + } + + private fun projects(http: HttpRequest, dao: DataAccessObject) { + + val projects = dao.listProjects() + + http.view = ProjectFeed(projects) + http.renderFeed("project-feed") } private fun issues(http: HttpRequest, dao: DataAccessObject) { + val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) } + if (project == null) { + http.response.sendError(404) + return + } - val issues = dao.listIssues(IssueFilter()).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER) + val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER) - http.view = IssueFeed(issues.groupBy(Issue::project)) - http.forward("issues-feed") + http.view = IssueFeed(project, issues) + http.renderFeed("issues-feed") } } \ No newline at end of file