From ae7ead62724a85e9674850feba8fb69a80c8ad6b Mon Sep 17 00:00:00 2001 From: nazoking Date: Tue, 6 Jan 2015 17:07:32 +0900 Subject: [PATCH] Add "X-Github-Event" header, and change interface. --- src/main/scala/app/PullRequestsController.scala | 3 ++- src/main/scala/app/RepositorySettingsController.scala | 2 +- src/main/scala/app/RepositoryViewerController.scala | 2 +- src/main/scala/service/WebHookService.scala | 3 ++- src/main/scala/servlet/GitRepositoryServlet.scala | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/scala/app/PullRequestsController.scala b/src/main/scala/app/PullRequestsController.scala index 23ed289c0..2bccdaebe 100644 --- a/src/main/scala/app/PullRequestsController.scala +++ b/src/main/scala/app/PullRequestsController.scala @@ -192,10 +192,11 @@ trait PullRequestsControllerBase extends ControllerBase { closeIssuesFromMessage(form.message, loginAccount.userName, owner, name) } // call web hook + // TODO: set action https://developer.github.com/v3/activity/events/types/#pullrequestevent getWebHookURLs(owner, name) match { case webHookURLs if(webHookURLs.nonEmpty) => for(ownerAccount <- getAccountByUserName(owner)){ - callWebHook(owner, name, webHookURLs, + callWebHook("pull_request", webHookURLs, WebHookPayload(git, loginAccount, mergeBaseRefName, repository, commits.flatten.toList, ownerAccount)) } case _ => diff --git a/src/main/scala/app/RepositorySettingsController.scala b/src/main/scala/app/RepositorySettingsController.scala index cce95bbca..a396801dc 100644 --- a/src/main/scala/app/RepositorySettingsController.scala +++ b/src/main/scala/app/RepositorySettingsController.scala @@ -166,7 +166,7 @@ trait RepositorySettingsControllerBase extends ControllerBase { .call.iterator.asScala.map(new CommitInfo(_)) getAccountByUserName(repository.owner).foreach { ownerAccount => - callWebHook(repository.owner, repository.name, + callWebHook("push", List(model.WebHook(repository.owner, repository.name, form.url)), WebHookPayload(git, ownerAccount, "refs/heads/" + repository.repository.defaultBranch, repository, commits.toList, ownerAccount) ) diff --git a/src/main/scala/app/RepositoryViewerController.scala b/src/main/scala/app/RepositoryViewerController.scala index 8faf1ad87..e288c9861 100644 --- a/src/main/scala/app/RepositoryViewerController.scala +++ b/src/main/scala/app/RepositoryViewerController.scala @@ -507,7 +507,7 @@ trait RepositoryViewerControllerBase extends ControllerBase { getWebHookURLs(repository.owner, repository.name) match { case webHookURLs if(webHookURLs.nonEmpty) => for(ownerAccount <- getAccountByUserName(repository.owner)){ - callWebHook(repository.owner, repository.name, webHookURLs, + callWebHook("push", webHookURLs, WebHookPayload(git, loginAccount, headName, repository, List(commit), ownerAccount)) } case _ => diff --git a/src/main/scala/service/WebHookService.scala b/src/main/scala/service/WebHookService.scala index a2dafbf51..98ee9be45 100644 --- a/src/main/scala/service/WebHookService.scala +++ b/src/main/scala/service/WebHookService.scala @@ -27,7 +27,7 @@ trait WebHookService { def deleteWebHookURL(owner: String, repository: String, url :String)(implicit s: Session): Unit = WebHooks.filter(_.byPrimaryKey(owner, repository, url)).delete - def callWebHook(owner: String, repository: String, webHookURLs: List[WebHook], payload: WebHookPayload): Unit = { + def callWebHook(eventName: String, webHookURLs: List[WebHook], payload: WebHookPayload): Unit = { import org.json4s._ import org.json4s.jackson.Serialization import org.json4s.jackson.Serialization.{read, write} @@ -47,6 +47,7 @@ trait WebHookService { val f = Future { logger.debug(s"start web hook invocation for ${webHookUrl}") val httpPost = new HttpPost(webHookUrl.url) + httpPost.addHeader("X-Github-Event", eventName) val params: java.util.List[NameValuePair] = new java.util.ArrayList() params.add(new BasicNameValuePair("payload", json)) diff --git a/src/main/scala/servlet/GitRepositoryServlet.scala b/src/main/scala/servlet/GitRepositoryServlet.scala index 7fde407d0..0dfd774d9 100644 --- a/src/main/scala/servlet/GitRepositoryServlet.scala +++ b/src/main/scala/servlet/GitRepositoryServlet.scala @@ -185,7 +185,7 @@ class CommitLogHook(owner: String, repository: String, pusher: String, baseUrl: for(pusherAccount <- getAccountByUserName(pusher); ownerAccount <- getAccountByUserName(owner); repositoryInfo <- getRepository(owner, repository, baseUrl)){ - callWebHook(owner, repository, webHookURLs, + callWebHook("push", webHookURLs, WebHookPayload(git, pusherAccount, command.getRefName, repositoryInfo, newCommits, ownerAccount)) } case _ =>