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

changeset 199
59393c8cc557
parent 198
94f174d591ab
child 235
4258b9e010ae
equal deleted inserted replaced
198:94f174d591ab 199:59393c8cc557
30 import de.uapcore.lightpit.dao.DataAccessObject 30 import de.uapcore.lightpit.dao.DataAccessObject
31 import de.uapcore.lightpit.util.IssueFilter 31 import de.uapcore.lightpit.util.IssueFilter
32 import de.uapcore.lightpit.util.IssueSorter 32 import de.uapcore.lightpit.util.IssueSorter
33 import de.uapcore.lightpit.util.SpecificFilter 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
36 import javax.servlet.annotation.WebServlet 35 import javax.servlet.annotation.WebServlet
37 36
38 @WebServlet(urlPatterns = ["/feed/*"]) 37 @WebServlet(urlPatterns = ["/feed/*"])
39 class FeedServlet : AbstractServlet() { 38 class FeedServlet : AbstractServlet() {
40 39
41 init { 40 init {
42 get("/projects.rss", this::projects)
43 get("/%project/issues.rss", this::issues) 41 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")
52 } 42 }
53 43
54 private fun issues(http: HttpRequest, dao: DataAccessObject) { 44 private fun issues(http: HttpRequest, dao: DataAccessObject) {
55 val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) } 45 val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) }
56 if (project == null) { 46 if (project == null) {
57 http.response.sendError(404) 47 http.response.sendError(404)
58 return 48 return
59 } 49 }
60 50
51 // TODO: add a timestamp filter (e.g. last 30 days)
61 val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER) 52 val issues = dao.listIssues(IssueFilter(SpecificFilter(project))).sortedWith(IssueSorter.DEFAULT_ISSUE_SORTER)
62 53
63 http.view = IssueFeed(project, issues) 54 http.view = IssueFeed(project, issues)
64 http.renderFeed("issues-feed") 55 http.renderFeed("issues-feed")
65 } 56 }

mercurial