From c467594199051b5233eca0332398f7bdb2d27b00 Mon Sep 17 00:00:00 2001 From: nazoking Date: Mon, 20 Apr 2015 13:19:17 +0900 Subject: [PATCH 1/2] add html_url and comments_url on api issue --- src/main/scala/gitbucket/core/api/ApiIssue.scala | 10 +++++++--- src/main/scala/gitbucket/core/api/JsonFormat.scala | 2 +- .../scala/gitbucket/core/service/WebHookService.scala | 4 ++-- src/test/scala/gitbucket/core/api/JsonFormatSpec.scala | 4 +++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/scala/gitbucket/core/api/ApiIssue.scala b/src/main/scala/gitbucket/core/api/ApiIssue.scala index 7fef81b50..45b5d62c2 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 @@ case class ApiIssue( 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 @@ object ApiIssue{ 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 bcca2f16a..33611fd5c 100644 --- a/src/main/scala/gitbucket/core/api/JsonFormat.scala +++ b/src/main/scala/gitbucket/core/api/JsonFormat.scala @@ -23,7 +23,7 @@ object JsonFormat { ) + 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]() def apiPathSerializer(c: Context) = new CustomSerializer[ApiPath](format => diff --git a/src/main/scala/gitbucket/core/service/WebHookService.scala b/src/main/scala/gitbucket/core/service/WebHookService.scala index 6e7bd63f6..05913fecd 100644 --- a/src/main/scala/gitbucket/core/service/WebHookService.scala +++ b/src/main/scala/gitbucket/core/service/WebHookService.scala @@ -90,7 +90,7 @@ trait WebHookPullRequestService extends WebHookService { 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,7 +272,7 @@ object WebHookService { WebHookIssueCommentPayload( action = "created", repository = ApiRepository(repository, repositoryUser), - issue = ApiIssue(issue, ApiUser(issueUser)), + issue = ApiIssue(issue, RepositoryName(repository), ApiUser(issueUser)), comment = ApiComment(comment, 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 73d4ef7d1..2116c3cab 100644 --- a/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala +++ b/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala @@ -157,13 +157,15 @@ class JsonFormatSpec extends Specification { 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" }""" From 5568acc5f36560fe99381c3e5186c69ee6f69371 Mon Sep 17 00:00:00 2001 From: nazoking Date: Mon, 20 Apr 2015 14:32:16 +0900 Subject: [PATCH 2/2] add html_url on api issue-comment --- src/main/scala/gitbucket/core/api/ApiComment.scala | 9 ++++++--- src/main/scala/gitbucket/core/api/JsonFormat.scala | 2 +- .../gitbucket/core/controller/IssuesController.scala | 4 ++-- .../scala/gitbucket/core/service/WebHookService.scala | 2 +- src/test/scala/gitbucket/core/api/JsonFormatSpec.scala | 3 ++- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/scala/gitbucket/core/api/ApiComment.scala b/src/main/scala/gitbucket/core/api/ApiComment.scala index fb6b68899..47244f2a1 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 @@ case class ApiComment( 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/JsonFormat.scala b/src/main/scala/gitbucket/core/api/JsonFormat.scala index 33611fd5c..a14a116cc 100644 --- a/src/main/scala/gitbucket/core/api/JsonFormat.scala +++ b/src/main/scala/gitbucket/core/api/JsonFormat.scala @@ -23,7 +23,7 @@ object JsonFormat { ) + FieldSerializer[ApiUser]() + FieldSerializer[ApiPullRequest]() + FieldSerializer[ApiRepository]() + FieldSerializer[ApiCommitListItem.Parent]() + FieldSerializer[ApiCommitListItem]() + FieldSerializer[ApiCommitListItem.Commit]() + FieldSerializer[ApiCommitStatus]() + FieldSerializer[ApiCommit]() + FieldSerializer[ApiCombinedCommitStatus]() + - FieldSerializer[ApiPullRequest.Commit]() + FieldSerializer[ApiIssue]() + 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 80c450bcb..1aafbeb99 100644 --- a/src/main/scala/gitbucket/core/controller/IssuesController.scala +++ b/src/main/scala/gitbucket/core/controller/IssuesController.scala @@ -86,7 +86,7 @@ trait IssuesControllerBase extends ControllerBase { 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 @@ trait IssuesControllerBase extends ControllerBase { (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 05913fecd..04d4d5073 100644 --- a/src/main/scala/gitbucket/core/service/WebHookService.scala +++ b/src/main/scala/gitbucket/core/service/WebHookService.scala @@ -273,7 +273,7 @@ object WebHookService { action = "created", repository = ApiRepository(repository, repositoryUser), issue = ApiIssue(issue, RepositoryName(repository), ApiUser(issueUser)), - comment = ApiComment(comment, ApiUser(commentUser)), + 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 2116c3cab..c56447835 100644 --- a/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala +++ b/src/test/scala/gitbucket/core/api/JsonFormatSpec.scala @@ -90,11 +90,12 @@ class JsonFormatSpec extends Specification { 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" }"""