Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/savage.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Rebert <code@rebertia.com>2015-03-24 07:45:10 +0300
committerChris Rebert <code@rebertia.com>2015-03-24 07:54:26 +0300
commitec4f128467c3a070de73c42701e07688a3134513 (patch)
tree9b785e27662f86e50dd4541913aa71b35116966f
parentd43fdf6dbed5153509324ce43c3108543d6865ee (diff)
add PullRequestAction & refactor
-rw-r--r--src/main/scala/com/getbootstrap/savage/github/pr_action/PullRequestAction.scala44
-rw-r--r--src/main/scala/com/getbootstrap/savage/github/util/package.scala7
-rw-r--r--src/main/scala/com/getbootstrap/savage/server/SavageWebService.scala9
3 files changed, 56 insertions, 4 deletions
diff --git a/src/main/scala/com/getbootstrap/savage/github/pr_action/PullRequestAction.scala b/src/main/scala/com/getbootstrap/savage/github/pr_action/PullRequestAction.scala
new file mode 100644
index 0000000..dc00ca0
--- /dev/null
+++ b/src/main/scala/com/getbootstrap/savage/github/pr_action/PullRequestAction.scala
@@ -0,0 +1,44 @@
+package com.getbootstrap.savage.github.pr_action
+
+object PullRequestAction {
+ def apply(name: String): Option[PullRequestAction] = {
+ name match {
+ case Assigned.Name => Some(Assigned)
+ case Unassigned.Name => Some(Unassigned)
+ case Labeled.Name => Some(Labeled)
+ case Unlabeled.Name => Some(Unlabeled)
+ case Opened.Name => Some(Opened)
+ case Closed.Name => Some(Closed)
+ case Reopened.Name => Some(Reopened)
+ case Synchronize.Name => Some(Synchronize)
+ case _ => None
+ }
+ }
+}
+sealed trait PullRequestAction {
+ def Name: String
+}
+object Assigned extends PullRequestAction {
+ override val Name = "assigned"
+}
+object Unassigned extends PullRequestAction {
+ override val Name = "unassigned"
+}
+object Labeled extends PullRequestAction {
+ override val Name = "labeled"
+}
+object Unlabeled extends PullRequestAction {
+ override val Name = "unlabeled"
+}
+object Opened extends PullRequestAction {
+ override val Name = "opened"
+}
+object Closed extends PullRequestAction {
+ override val Name = "closed"
+}
+object Reopened extends PullRequestAction {
+ override val Name = "reopened"
+}
+object Synchronize extends PullRequestAction {
+ override val Name = "synchronize"
+}
diff --git a/src/main/scala/com/getbootstrap/savage/github/util/package.scala b/src/main/scala/com/getbootstrap/savage/github/util/package.scala
index 520378c..7a5bd39 100644
--- a/src/main/scala/com/getbootstrap/savage/github/util/package.scala
+++ b/src/main/scala/com/getbootstrap/savage/github/util/package.scala
@@ -1,6 +1,8 @@
package com.getbootstrap.savage.github
import org.eclipse.egit.github.core._
+import org.eclipse.egit.github.core.event.PullRequestPayload
+import com.getbootstrap.savage.github.pr_action.PullRequestAction
package object util {
private val SafeRepoRegex = "^[0-9a-zA-Z_-]+/[0-9a-zA-Z_-]+$".r
@@ -21,10 +23,15 @@ package object util {
}
implicit class RichPullRequest(pr: PullRequest) {
+ import org.eclipse.egit.github.core.service.IssueService
def number: PullRequestNumber = PullRequestNumber(pr.getNumber).get
+ def isOpen: Boolean = (pr.getState == IssueService.STATE_OPEN)
}
implicit class RichRepositoryId(repoId: RepositoryId) {
def asPushRemote: String = s"git@github.com:${repoId.generateId}.git"
def asPullRemote: String = s"https://github.com/${repoId.generateId}.git"
}
+ implicit class RichPullRequestPayload(payload: PullRequestPayload) {
+ def action: PullRequestAction = PullRequestAction(payload.getAction).get
+ }
}
diff --git a/src/main/scala/com/getbootstrap/savage/server/SavageWebService.scala b/src/main/scala/com/getbootstrap/savage/server/SavageWebService.scala
index 2f81f6d..511dc3d 100644
--- a/src/main/scala/com/getbootstrap/savage/server/SavageWebService.scala
+++ b/src/main/scala/com/getbootstrap/savage/server/SavageWebService.scala
@@ -5,7 +5,8 @@ import akka.actor.ActorRef
import spray.routing._
import spray.http._
import com.getbootstrap.savage.PullRequestBuildResult
-import com.getbootstrap.savage.github.{BranchDeletionRequest, PullRequestNumber, commit_status}
+import com.getbootstrap.savage.github.{BranchDeletionRequest, PullRequestNumber, commit_status, pr_action}
+import com.getbootstrap.savage.github.util._
class SavageWebService(
protected val pullRequestEventHandler: ActorRef,
@@ -44,10 +45,10 @@ class SavageWebService(
}
case "pull_request" => {
authenticatedPullRequestEvent(settings.GitHubWebHookSecretKey.toArray) { event =>
- event.getAction match {
- case "opened" | "synchronize" => {
+ event.action match {
+ case pr_action.Opened | pr_action.Synchronize => {
val pr = event.getPullRequest
- if (pr.getState == "open") {
+ if (pr.isOpen) {
pullRequestEventHandler ! pr
complete(StatusCodes.OK)
}