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

changeset 198
94f174d591ab
parent 195
9c7aff3cbb14
child 199
59393c8cc557
equal deleted inserted replaced
197:0a2ad22ac656 198:94f174d591ab
26 package de.uapcore.lightpit.servlet 26 package de.uapcore.lightpit.servlet
27 27
28 import de.uapcore.lightpit.AbstractServlet 28 import de.uapcore.lightpit.AbstractServlet
29 import de.uapcore.lightpit.HttpRequest 29 import de.uapcore.lightpit.HttpRequest
30 import de.uapcore.lightpit.dao.DataAccessObject 30 import de.uapcore.lightpit.dao.DataAccessObject
31 import de.uapcore.lightpit.entities.Issue
32 import de.uapcore.lightpit.util.IssueFilter 31 import de.uapcore.lightpit.util.IssueFilter
33 import de.uapcore.lightpit.util.IssueSorter 32 import de.uapcore.lightpit.util.IssueSorter
33 import de.uapcore.lightpit.util.SpecificFilter
34 import de.uapcore.lightpit.viewmodel.IssueFeed 34 import de.uapcore.lightpit.viewmodel.IssueFeed
35 import de.uapcore.lightpit.viewmodel.ProjectFeed
35 import javax.servlet.annotation.WebServlet 36 import javax.servlet.annotation.WebServlet
36 37
37 @WebServlet(urlPatterns = ["/feed/*"]) 38 @WebServlet(urlPatterns = ["/feed/*"])
38 class FeedServlet : AbstractServlet() { 39 class FeedServlet : AbstractServlet() {
39 40
40 init { 41 init {
41 get("/issues.rss", this::issues) 42 get("/projects.rss", this::projects)
43 get("/%project/issues.rss", this::issues)
44 }
45
46 private fun projects(http: HttpRequest, dao: DataAccessObject) {
47
48 val projects = dao.listProjects()
49
50 http.view = ProjectFeed(projects)
51 http.renderFeed("project-feed")
42 } 52 }
43 53
44 private fun issues(http: HttpRequest, dao: DataAccessObject) { 54 private fun issues(http: HttpRequest, dao: DataAccessObject) {
55 val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) }
56 if (project == null) {
57 http.response.sendError(404)
58 return
59 }
45 60
46 val issues = dao.listIssues(IssueFilter()).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER) 61 val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER)
47 62
48 http.view = IssueFeed(issues.groupBy(Issue::project)) 63 http.view = IssueFeed(project, issues)
49 http.forward("issues-feed") 64 http.renderFeed("issues-feed")
50 } 65 }
51 } 66 }

mercurial