29 import de.uapcore.lightpit.OptionalPathInfo |
29 import de.uapcore.lightpit.OptionalPathInfo |
30 import de.uapcore.lightpit.dao.DataAccessObject |
30 import de.uapcore.lightpit.dao.DataAccessObject |
31 import de.uapcore.lightpit.entities.Component |
31 import de.uapcore.lightpit.entities.Component |
32 import de.uapcore.lightpit.entities.Version |
32 import de.uapcore.lightpit.entities.Version |
33 |
33 |
34 data class PathInfos( |
34 abstract class PathInfos(val issuesHref: String) |
|
35 class PathInfosOnlyIssues(issuesHref: String): PathInfos(issuesHref) |
|
36 data class PathInfosFull( |
35 val projectInfo: ProjectInfo, |
37 val projectInfo: ProjectInfo, |
36 val versionInfo: OptionalPathInfo<Version>, |
38 val versionInfo: OptionalPathInfo<Version>, |
37 val componentInfo: OptionalPathInfo<Component> |
39 val componentInfo: OptionalPathInfo<Component> |
38 ) { |
40 ): PathInfos("projects/${projectInfo.project.node}/issues/${versionInfo.node}/${componentInfo.node}/") |
39 val issuesHref by lazyOf("projects/${projectInfo.project.node}/issues/${versionInfo.node}/${componentInfo.node}/") |
|
40 } |
|
41 |
41 |
42 private fun obtainProjectInfo(http: HttpRequest, dao: DataAccessObject): ProjectInfo? { |
42 private fun obtainProjectInfo(http: HttpRequest, dao: DataAccessObject): ProjectInfo? { |
43 val pathParam = http.pathParams["project"] ?: return null |
43 val pathParam = http.pathParams["project"] ?: return null |
44 val project = dao.findProjectByNode(pathParam) ?: return null |
44 val project = dao.findProjectByNode(pathParam) ?: return null |
45 |
45 |
52 components, |
52 components, |
53 dao.collectIssueSummary(project) |
53 dao.collectIssueSummary(project) |
54 ) |
54 ) |
55 } |
55 } |
56 |
56 |
57 fun withPathInfo(http: HttpRequest, dao: DataAccessObject): PathInfos? { |
57 fun withPathInfo(http: HttpRequest, dao: DataAccessObject): PathInfosFull? { |
58 val projectInfo = obtainProjectInfo(http, dao) |
58 val projectInfo = obtainProjectInfo(http, dao) |
59 if (projectInfo == null) { |
59 if (projectInfo == null) { |
60 http.response.sendError(404) |
60 http.response.sendError(404) |
61 return null |
61 return null |
62 } |
62 } |