(refs #453)Fix "Test Hook" behavior

This commit is contained in:
Naoki Takezoe
2014-09-15 13:04:39 +09:00
parent 9c6ea8fb9d
commit 5bddd352af
2 changed files with 16 additions and 17 deletions

View File

@@ -2,10 +2,8 @@ package app
import service._ import service._
import util.Directory._ import util.Directory._
import util.ControlUtil._
import util.Implicits._ import util.Implicits._
import util.{LockUtil, UsersAuthenticator, OwnerAuthenticator} import util.{LockUtil, UsersAuthenticator, OwnerAuthenticator}
import util.JGitUtil.CommitInfo
import jp.sf.amateras.scalatra.forms._ import jp.sf.amateras.scalatra.forms._
import org.apache.commons.io.FileUtils import org.apache.commons.io.FileUtils
import org.scalatra.i18n.Messages import org.scalatra.i18n.Messages
@@ -137,7 +135,7 @@ trait RepositorySettingsControllerBase extends ControllerBase {
* Display the web hook page. * Display the web hook page.
*/ */
get("/:owner/:repository/settings/hooks")(ownerOnly { repository => 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 @@ trait RepositorySettingsControllerBase extends ControllerBase {
/** /**
* Send the test request to registered web hook URLs. * 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 => using(Git.open(getRepositoryDir(repository.owner, repository.name))){ git =>
import scala.collection.JavaConverters._ import scala.collection.JavaConverters._
val commits = git.log val commits = git.log
@@ -167,15 +165,13 @@ trait RepositorySettingsControllerBase extends ControllerBase {
.setMaxCount(3) .setMaxCount(3)
.call.iterator.asScala.map(new CommitInfo(_)) .call.iterator.asScala.map(new CommitInfo(_))
getWebHookURLs(repository.owner, repository.name) match { getAccountByUserName(repository.owner).foreach { ownerAccount =>
case webHookURLs if(webHookURLs.nonEmpty) => callWebHook(repository.owner, repository.name,
for(ownerAccount <- getAccountByUserName(repository.owner)){ List(model.WebHook(repository.owner, repository.name, form.url)),
callWebHook(repository.owner, repository.name, webHookURLs, WebHookPayload(git, ownerAccount, "refs/heads/" + repository.repository.defaultBranch, repository, commits.toList, ownerAccount)
WebHookPayload(git, ownerAccount, "refs/heads/" + repository.repository.defaultBranch, repository, commits.toList, ownerAccount)) )
}
case _ =>
} }
flash += "url" -> form.url
flash += "info" -> "Test payload deployed!" flash += "info" -> "Test payload deployed!"
} }
redirect(s"/${repository.owner}/${repository.name}/settings/hooks") redirect(s"/${repository.owner}/${repository.name}/settings/hooks")

View File

@@ -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 context._
@import view.helpers._ @import view.helpers._
@html.main("Settings", Some(repository)){ @html.main("Settings", Some(repository)){
@@ -11,13 +14,13 @@
<li>@webHook.url <a href="@url(repository)/settings/hooks/delete?url=@urlEncode(webHook.url)" class="remove">(remove)</a></li> <li>@webHook.url <a href="@url(repository)/settings/hooks/delete?url=@urlEncode(webHook.url)" class="remove">(remove)</a></li>
} }
</ul> </ul>
<form method="POST" action="@url(repository)/settings/hooks/add" validate="true"> <form method="POST" validate="true">
<div> <div>
<span class="error" id="error-url"></span> <span class="error" id="error-url"></span>
</div> </div>
<input type="text" name="url" id="url" style="width: 300px; margin-bottom: 0px;"/> <input type="text" name="url" id="url" value="@enteredUrl" style="width: 300px; margin-bottom: 0px;"/>
<input type="submit" class="btn" value="Add"/> <input type="submit" class="btn" formaction="@url(repository)/settings/hooks/add" value="Add"/>
<a href="@url(repository)/settings/hooks/test" class="btn">Test Hook</a> <input type="submit" class="btn" formaction="@url(repository)/settings/hooks/test" value="Test Hook"/>
</form> </form>
} }
} }