diff --git a/src/main/scala/gitbucket/core/api/ApiComment.scala b/src/main/scala/gitbucket/core/api/ApiComment.scala index fb6b688..47244f2 100644 --- a/src/main/scala/gitbucket/core/api/ApiComment.scala +++ b/src/main/scala/gitbucket/core/api/ApiComment.scala @@ -1,6 +1,7 @@ package gitbucket.core.api import gitbucket.core.model.IssueComment +import gitbucket.core.util.RepositoryName import java.util.Date @@ -13,14 +14,16 @@ user: ApiUser, body: String, created_at: Date, - updated_at: Date) + updated_at: Date)(repositoryName: RepositoryName, issueId: Int){ + val html_url = ApiPath(s"/${repositoryName.fullName}/issues/${issueId}#comment-${id}") +} object ApiComment{ - def apply(comment: IssueComment, user: ApiUser): ApiComment = + def apply(comment: IssueComment, repositoryName: RepositoryName, issueId: Int, user: ApiUser): ApiComment = ApiComment( id = comment.commentId, user = user, body = comment.content, created_at = comment.registeredDate, - updated_at = comment.updatedDate) + updated_at = comment.updatedDate)(repositoryName, issueId) } diff --git a/src/main/scala/gitbucket/core/api/ApiIssue.scala b/src/main/scala/gitbucket/core/api/ApiIssue.scala index 7fef81b..45b5d62 100644 --- a/src/main/scala/gitbucket/core/api/ApiIssue.scala +++ b/src/main/scala/gitbucket/core/api/ApiIssue.scala @@ -1,6 +1,7 @@ package gitbucket.core.api import gitbucket.core.model.Issue +import gitbucket.core.util.RepositoryName import java.util.Date @@ -16,10 +17,13 @@ state: String, created_at: Date, updated_at: Date, - body: String) + body: String)(repositoryName: RepositoryName){ + val comments_url = ApiPath(s"/api/v3/repos/${repositoryName.fullName}/issues/${number}/comments") + val html_url = ApiPath(s"/${repositoryName.fullName}/issues/${number}") +} object ApiIssue{ - def apply(issue: Issue, user: ApiUser): ApiIssue = + def apply(issue: Issue, repositoryName: RepositoryName, user: ApiUser): ApiIssue = ApiIssue( number = issue.issueId, title = issue.title, @@ -27,5 +31,5 @@ state = if(issue.closed){ "closed" }else{ "open" }, body = issue.content.getOrElse(""), created_at = issue.registeredDate, - updated_at = issue.updatedDate) + updated_at = issue.updatedDate)(repositoryName) } diff --git a/src/main/scala/gitbucket/core/api/JsonFormat.scala b/src/main/scala/gitbucket/core/api/JsonFormat.scala index bcca2f1..a14a116 100644 --- a/src/main/scala/gitbucket/core/api/JsonFormat.scala +++ b/src/main/scala/gitbucket/core/api/JsonFormat.scala @@ -23,7 +23,7 @@ ) + FieldSerializer[ApiUser]() + FieldSerializer[ApiPullRequest]() + FieldSerializer[ApiRepository]() + FieldSerializer[ApiCommitListItem.Parent]() + FieldSerializer[ApiCommitListItem]() + FieldSerializer[ApiCommitListItem.Commit]() + FieldSerializer[ApiCommitStatus]() + FieldSerializer[ApiCommit]() + FieldSerializer[ApiCombinedCommitStatus]() + - FieldSerializer[ApiPullRequest.Commit]() + FieldSerializer[ApiPullRequest.Commit]() + FieldSerializer[ApiIssue]() + FieldSerializer[ApiComment]() def apiPathSerializer(c: Context) = new CustomSerializer[ApiPath](format => diff --git a/src/main/scala/gitbucket/core/controller/IssuesController.scala b/src/main/scala/gitbucket/core/controller/IssuesController.scala index 80c450b..1aafbeb 100644 --- a/src/main/scala/gitbucket/core/controller/IssuesController.scala +++ b/src/main/scala/gitbucket/core/controller/IssuesController.scala @@ -86,7 +86,7 @@ issueId <- params("id").toIntOpt comments = getCommentsForApi(repository.owner, repository.name, issueId.toInt) } yield { - JsonFormat(comments.map{ case (issueComment, user) => ApiComment(issueComment, ApiUser(user)) }) + JsonFormat(comments.map{ case (issueComment, user) => ApiComment(issueComment, RepositoryName(repository), issueId, ApiUser(user)) }) }).getOrElse(NotFound) }) @@ -190,7 +190,7 @@ (issue, id) <- handleComment(issueId, Some(body), repository)() issueComment <- getComment(repository.owner, repository.name, id.toString()) } yield { - JsonFormat(ApiComment(issueComment, ApiUser(context.loginAccount.get))) + JsonFormat(ApiComment(issueComment, RepositoryName(repository), issueId, ApiUser(context.loginAccount.get))) }) getOrElse NotFound }) diff --git a/src/main/scala/gitbucket/core/service/WebHookService.scala b/src/main/scala/gitbucket/core/service/WebHookService.scala index 6e7bd63..04d4d50 100644 --- a/src/main/scala/gitbucket/core/service/WebHookService.scala +++ b/src/main/scala/gitbucket/core/service/WebHookService.scala @@ -90,7 +90,7 @@ action = action, number = issue.issueId, repository = ApiRepository(repository, ApiUser(repoOwner)), - issue = ApiIssue(issue, ApiUser(issueUser)), + issue = ApiIssue(issue, RepositoryName(repository), ApiUser(issueUser)), sender = ApiUser(sender)) } } @@ -272,8 +272,8 @@ WebHookIssueCommentPayload( action = "created", repository = ApiRepository(repository, repositoryUser), - issue = ApiIssue(issue, ApiUser(issueUser)), - comment = ApiComment(comment, ApiUser(commentUser)), + issue = ApiIssue(issue, RepositoryName(repository), ApiUser(issueUser)), + comment = ApiComment(comment, RepositoryName(repository), issue.issueId, ApiUser(commentUser)), sender = ApiUser(sender)) } } diff --git a/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala b/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala index 73d4ef7..c564478 100644 --- a/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala +++ b/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala @@ -90,11 +90,12 @@ user = apiUser, body= "Me too", created_at= date1, - updated_at= date1) + updated_at= date1)(RepositoryName("octocat","Hello-World"), 100) val apiCommentJson = s"""{ "id": 1, "body": "Me too", "user": $apiUserJson, + "html_url" : "${context.baseUrl}/octocat/Hello-World/issues/100#comment-1", "created_at": "2011-04-14T16:00:49Z", "updated_at": "2011-04-14T16:00:49Z" }""" @@ -157,13 +158,15 @@ state = "open", body = "I'm having a problem with this.", created_at = date1, - updated_at = date1) + updated_at = date1)(RepositoryName("octocat","Hello-World")) val apiIssueJson = s"""{ "number": 1347, "state": "open", "title": "Found a bug", "body": "I'm having a problem with this.", "user": $apiUserJson, + "comments_url": "${context.baseUrl}/api/v3/repos/octocat/Hello-World/issues/1347/comments", + "html_url": "${context.baseUrl}/octocat/Hello-World/issues/1347", "created_at": "2011-04-14T16:00:49Z", "updated_at": "2011-04-14T16:00:49Z" }"""