1.1 --- a/src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt Thu May 13 18:01:56 2021 +0200 1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/servlet/FeedServlet.kt Thu May 13 19:31:09 2021 +0200 1.3 @@ -28,24 +28,39 @@ 1.4 import de.uapcore.lightpit.AbstractServlet 1.5 import de.uapcore.lightpit.HttpRequest 1.6 import de.uapcore.lightpit.dao.DataAccessObject 1.7 -import de.uapcore.lightpit.entities.Issue 1.8 import de.uapcore.lightpit.util.IssueFilter 1.9 import de.uapcore.lightpit.util.IssueSorter 1.10 +import de.uapcore.lightpit.util.SpecificFilter 1.11 import de.uapcore.lightpit.viewmodel.IssueFeed 1.12 +import de.uapcore.lightpit.viewmodel.ProjectFeed 1.13 import javax.servlet.annotation.WebServlet 1.14 1.15 @WebServlet(urlPatterns = ["/feed/*"]) 1.16 class FeedServlet : AbstractServlet() { 1.17 1.18 init { 1.19 - get("/issues.rss", this::issues) 1.20 + get("/projects.rss", this::projects) 1.21 + get("/%project/issues.rss", this::issues) 1.22 + } 1.23 + 1.24 + private fun projects(http: HttpRequest, dao: DataAccessObject) { 1.25 + 1.26 + val projects = dao.listProjects() 1.27 + 1.28 + http.view = ProjectFeed(projects) 1.29 + http.renderFeed("project-feed") 1.30 } 1.31 1.32 private fun issues(http: HttpRequest, dao: DataAccessObject) { 1.33 + val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) } 1.34 + if (project == null) { 1.35 + http.response.sendError(404) 1.36 + return 1.37 + } 1.38 1.39 - val issues = dao.listIssues(IssueFilter()).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER) 1.40 + val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER) 1.41 1.42 - http.view = IssueFeed(issues.groupBy(Issue::project)) 1.43 - http.forward("issues-feed") 1.44 + http.view = IssueFeed(project, issues) 1.45 + http.renderFeed("issues-feed") 1.46 } 1.47 } 1.48 \ No newline at end of file