src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt

changeset 198
94f174d591ab
parent 195
9c7aff3cbb14
child 199
59393c8cc557
--- 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 issues = dao.listIssues(IssueFilter()).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER)
+        val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) }
+        if (project == null) {
+            http.response.sendError(404)
+            return
+        }
 
-        http.view = IssueFeed(issues.groupBy(Issue::project))
-        http.forward("issues-feed")
+        val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER)
+
+        http.view = IssueFeed(project, issues)
+        http.renderFeed("issues-feed")
     }
 }
\ No newline at end of file

mercurial