diff --git a/src/main/scala/app/RepositorySettingsController.scala b/src/main/scala/app/RepositorySettingsController.scala index 180ca6e..53c3ef4 100644 --- a/src/main/scala/app/RepositorySettingsController.scala +++ b/src/main/scala/app/RepositorySettingsController.scala @@ -2,10 +2,8 @@ import service._ import util.Directory._ -import util.ControlUtil._ import util.Implicits._ import util.{LockUtil, UsersAuthenticator, OwnerAuthenticator} -import util.JGitUtil.CommitInfo import jp.sf.amateras.scalatra.forms._ import org.apache.commons.io.FileUtils import org.scalatra.i18n.Messages @@ -137,7 +135,7 @@ * Display the web hook page. */ get("/:owner/:repository/settings/hooks")(ownerOnly { repository => - settings.html.hooks(getWebHookURLs(repository.owner, repository.name), repository, flash.get("info")) + settings.html.hooks(getWebHookURLs(repository.owner, repository.name), flash.get("url"), repository, flash.get("info")) }) /** @@ -159,7 +157,7 @@ /** * Send the test request to registered web hook URLs. */ - get("/:owner/:repository/settings/hooks/test")(ownerOnly { repository => + post("/:owner/:repository/settings/hooks/test", webHookForm)(ownerOnly { (form, repository) => using(Git.open(getRepositoryDir(repository.owner, repository.name))){ git => import scala.collection.JavaConverters._ val commits = git.log @@ -167,15 +165,13 @@ .setMaxCount(3) .call.iterator.asScala.map(new CommitInfo(_)) - getWebHookURLs(repository.owner, repository.name) match { - case webHookURLs if(webHookURLs.nonEmpty) => - for(ownerAccount <- getAccountByUserName(repository.owner)){ - callWebHook(repository.owner, repository.name, webHookURLs, - WebHookPayload(git, ownerAccount, "refs/heads/" + repository.repository.defaultBranch, repository, commits.toList, ownerAccount)) - } - case _ => + getAccountByUserName(repository.owner).foreach { ownerAccount => + callWebHook(repository.owner, repository.name, + List(model.WebHook(repository.owner, repository.name, form.url)), + WebHookPayload(git, ownerAccount, "refs/heads/" + repository.repository.defaultBranch, repository, commits.toList, ownerAccount) + ) } - + flash += "url" -> form.url flash += "info" -> "Test payload deployed!" } redirect(s"/${repository.owner}/${repository.name}/settings/hooks") diff --git a/src/main/twirl/settings/hooks.scala.html b/src/main/twirl/settings/hooks.scala.html index 03d98ba..64e5f2b 100644 --- a/src/main/twirl/settings/hooks.scala.html +++ b/src/main/twirl/settings/hooks.scala.html @@ -1,4 +1,7 @@ -@(webHooks: List[model.WebHook], repository: service.RepositoryService.RepositoryInfo, info: Option[Any])(implicit context: app.Context) +@(webHooks: List[model.WebHook], + enteredUrl: Option[Any], + repository: service.RepositoryService.RepositoryInfo, + info: Option[Any])(implicit context: app.Context) @import context._ @import view.helpers._ @html.main("Settings", Some(repository)){ @@ -11,13 +14,13 @@