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-06-03 12:03:58 +0300
committerChris Rebert <code@rebertia.com>2015-06-03 12:03:58 +0300
commit3d5f7722978e5f039552aaa110b92952586392ce (patch)
tree0c55c8afc313f5a48a16b53dfed45711ab417f82
parent21e3a438fb7b41baedda0373ab132c652421fa7b (diff)
progress on jcabi-github portingjcabi-github
-rw-r--r--build.sbt5
-rw-r--r--src/main/resources/application.conf1
-rw-r--r--src/main/scala/com/getbootstrap/savage/github/Credentials.scala9
-rw-r--r--src/main/scala/com/getbootstrap/savage/github/GitHubActorWithLogging.scala5
-rw-r--r--src/main/scala/com/getbootstrap/savage/http/SuperWire.scala20
-rw-r--r--src/main/scala/com/getbootstrap/savage/http/UserAgent.scala3
-rw-r--r--src/main/scala/com/getbootstrap/savage/http/UserAgentWire.scala25
-rw-r--r--src/main/scala/com/getbootstrap/savage/server/BranchDeleter.scala4
-rw-r--r--src/main/scala/com/getbootstrap/savage/server/Settings.scala16
9 files changed, 73 insertions, 15 deletions
diff --git a/build.sbt b/build.sbt
index d1cc7f5..43ecdca 100644
--- a/build.sbt
+++ b/build.sbt
@@ -12,10 +12,7 @@ resolvers += "Eclipse Foundation Releases" at "https://repo.eclipse.org/content/
resolvers += "Eclipse Foundation Snapshots" at "https://repo.eclipse.org/content/repositories/snapshots/"
-libraryDependencies += "org.eclipse.mylyn.github" % "org.eclipse.egit.github.core" % "4.0.0.201503231230-m1"
-
-// egit-github needs Gson, but doesn't explicitly require it
-libraryDependencies += "com.google.code.gson" % "gson" % "2.3.1"
+libraryDependencies += "com.jcabi" % "jcabi-github" % "0.23"
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf
index c05219e..266cb6f 100644
--- a/src/main/resources/application.conf
+++ b/src/main/resources/application.conf
@@ -30,6 +30,7 @@ savage {
github-test-repo = "twbs-savage/bootstrap"
ignore-branches-from-watched-repo = true
trusted-orgs = [ "twbs" ]
+ github-rate-limit-threshold = 10
whitelist = [
"**.md",
"/bower.json",
diff --git a/src/main/scala/com/getbootstrap/savage/github/Credentials.scala b/src/main/scala/com/getbootstrap/savage/github/Credentials.scala
new file mode 100644
index 0000000..054531b
--- /dev/null
+++ b/src/main/scala/com/getbootstrap/savage/github/Credentials.scala
@@ -0,0 +1,9 @@
+package com.getbootstrap.savage.github
+
+import com.jcabi.github.{Github, RtGithub}
+import com.getbootstrap.savage.http.{UserAgent, SuperWire}
+
+case class Credentials(username: String, password: String) {
+ private def basicGithub: Github = new RtGithub(username, password)
+ def github(threshold: Int)(implicit userAgent: UserAgent): Github = new RtGithub(basicGithub.entry.through(classOf[SuperWire], userAgent, new Integer(threshold)))
+}
diff --git a/src/main/scala/com/getbootstrap/savage/github/GitHubActorWithLogging.scala b/src/main/scala/com/getbootstrap/savage/github/GitHubActorWithLogging.scala
index 9b231f3..79fec81 100644
--- a/src/main/scala/com/getbootstrap/savage/github/GitHubActorWithLogging.scala
+++ b/src/main/scala/com/getbootstrap/savage/github/GitHubActorWithLogging.scala
@@ -1,11 +1,8 @@
package com.getbootstrap.savage.github
-import org.eclipse.egit.github.core.client.GitHubClient
import com.getbootstrap.savage.server.{Settings, ActorWithLogging}
abstract class GitHubActorWithLogging extends ActorWithLogging {
protected implicit val settings = Settings(context.system)
- protected val gitHubClient = new GitHubClient()
- gitHubClient.setUserAgent(settings.UserAgent)
- gitHubClient.setCredentials(settings.BotUsername, settings.BotPassword)
+ protected val gitHubClient = settings.github()
}
diff --git a/src/main/scala/com/getbootstrap/savage/http/SuperWire.scala b/src/main/scala/com/getbootstrap/savage/http/SuperWire.scala
new file mode 100644
index 0000000..87b49da
--- /dev/null
+++ b/src/main/scala/com/getbootstrap/savage/http/SuperWire.scala
@@ -0,0 +1,20 @@
+package com.getbootstrap.savage.http
+
+import java.util.{Collection=>JavaCollection}
+import java.util.Map.{Entry=>MapEntry}
+import java.io.InputStream
+import com.jcabi.github.wire.RetryCarefulWire
+import com.jcabi.http.{Wire,Request,Response}
+
+case class SuperWire(private val wire: Wire, userAgent: UserAgent, threshold: Int) extends Wire {
+ private val wrappedWire = UserAgentWire(wire = new RetryCarefulWire(wire, threshold), userAgent = userAgent)
+
+ @Override
+ def send(
+ request: Request,
+ home: String,
+ method: String,
+ headers: JavaCollection[MapEntry[String, String]],
+ content: InputStream
+ ): Response = wrappedWire.send(request, home, method, headers, content)
+}
diff --git a/src/main/scala/com/getbootstrap/savage/http/UserAgent.scala b/src/main/scala/com/getbootstrap/savage/http/UserAgent.scala
new file mode 100644
index 0000000..e7e8419
--- /dev/null
+++ b/src/main/scala/com/getbootstrap/savage/http/UserAgent.scala
@@ -0,0 +1,3 @@
+package com.getbootstrap.savage.http
+
+case class UserAgent(userAgent: String)
diff --git a/src/main/scala/com/getbootstrap/savage/http/UserAgentWire.scala b/src/main/scala/com/getbootstrap/savage/http/UserAgentWire.scala
new file mode 100644
index 0000000..b293d56
--- /dev/null
+++ b/src/main/scala/com/getbootstrap/savage/http/UserAgentWire.scala
@@ -0,0 +1,25 @@
+package com.getbootstrap.savage.http
+
+import java.io.InputStream
+import java.util.Map.{Entry => MapEntry}
+import java.util.{Collection => JavaCollection}
+import scala.collection.JavaConverters._
+import com.jcabi.http._
+
+object UserAgentWire {
+ private val userAgentHeader = "User-Agent"
+}
+case class UserAgentWire(private val wire: Wire, userAgent: UserAgent) extends Wire {
+ @Override
+ def send(
+ request: Request,
+ home: String,
+ method: String,
+ headers: JavaCollection[MapEntry[String, String]],
+ content: InputStream
+ ): Response = {
+ val header = new ImmutableHeader(UserAgentWire.userAgentHeader, userAgent.userAgent)
+ val newHeaders = header +: headers.asScala.filter{ _.getKey != UserAgentWire.userAgentHeader}.toSeq
+ wire.send(request, home, method, newHeaders.asJava, content)
+ }
+}
diff --git a/src/main/scala/com/getbootstrap/savage/server/BranchDeleter.scala b/src/main/scala/com/getbootstrap/savage/server/BranchDeleter.scala
index 8bfd7fa..84cd39f 100644
--- a/src/main/scala/com/getbootstrap/savage/server/BranchDeleter.scala
+++ b/src/main/scala/com/getbootstrap/savage/server/BranchDeleter.scala
@@ -1,7 +1,6 @@
package com.getbootstrap.savage.server
import scala.collection.JavaConverters._
-import org.eclipse.egit.github.core.service.RepositoryService
import com.getbootstrap.savage.github.{SavageBranch, GitHubActorWithLogging}
import com.getbootstrap.savage.github.util.RichRepositoryId
import com.getbootstrap.savage.util.{SuccessfulExit, ErrorExit, SimpleSubprocess}
@@ -9,7 +8,8 @@ import com.getbootstrap.savage.util.{SuccessfulExit, ErrorExit, SimpleSubprocess
class BranchDeleter extends GitHubActorWithLogging {
override def receive = {
case branch:SavageBranch => {
- val repoService = new RepositoryService(gitHubClient)
+ val repoService = new RepositoryService()
+ gitHubClient.repos.get(settings.TestRepoId).br
val maybeRepoBranch = repoService.getBranches(settings.TestRepoId).asScala.find{ _.getName == branch.branch.name }
maybeRepoBranch match {
case None => log.info(s"Nothing to delete; ${branch} does not exist in ${settings.TestRepoId}")
diff --git a/src/main/scala/com/getbootstrap/savage/server/Settings.scala b/src/main/scala/com/getbootstrap/savage/server/Settings.scala
index d01c62d..75ee9ac 100644
--- a/src/main/scala/com/getbootstrap/savage/server/Settings.scala
+++ b/src/main/scala/com/getbootstrap/savage/server/Settings.scala
@@ -9,17 +9,23 @@ import akka.actor.ExtensionId
import akka.actor.ExtensionIdProvider
import akka.actor.ExtendedActorSystem
import akka.util.ByteString
-import org.eclipse.egit.github.core.RepositoryId
+import com.jcabi.github.Github
+import com.jcabi.github.Coordinates.{Simple=>RepoId}
+import com.getbootstrap.savage.github.Credentials
+import com.getbootstrap.savage.http.{UserAgent=>UA}
import com.getbootstrap.savage.util.{FilePathWhitelist,FilePathWatchlist,Utf8String,RichConfig}
class SettingsImpl(config: Config) extends Extension {
- val MainRepoId: RepositoryId = RepositoryId.createFromId(config.getString("savage.github-repo-to-watch"))
- val TestRepoId: RepositoryId = RepositoryId.createFromId(config.getString("savage.github-test-repo"))
+ val MainRepoId: RepoId = new RepoId(config.getString("savage.github-repo-to-watch"))
+ val TestRepoId: RepoId = new RepoId(config.getString("savage.github-test-repo"))
val BotUsername: String = config.getString("savage.username")
- val BotPassword: String = config.getString("savage.password")
+ private val botPassword: String = config.getString("savage.password")
+ private val botCredentials: Credentials = Credentials(username = BotUsername, password = botPassword)
+ private val githubRateLimitThreshold: Int = config.getInt("savage.github-rate-limit-threshold")
+ def github(): Github = botCredentials.github(githubRateLimitThreshold)(UserAgent)
val GitHubWebHookSecretKey: ByteString = ByteString(config.getString("savage.github-web-hook-secret-key").utf8Bytes)
val TravisToken: String = config.getString("savage.travis-token")
- val UserAgent: String = config.getString("spray.can.client.user-agent-header")
+ val UserAgent: UA = UA(config.getString("spray.can.client.user-agent-header"))
val DefaultPort: Int = config.getInt("savage.default-port")
val SquelchInvalidHttpLogging: Boolean = config.getBoolean("savage.squelch-invalid-http-logging")
val Whitelist: FilePathWhitelist = new FilePathWhitelist(config.getStringList("savage.whitelist").asScala)