diff options
author | Chris Rebert <code@rebertia.com> | 2015-04-14 13:47:11 +0300 |
---|---|---|
committer | Chris Rebert <code@rebertia.com> | 2015-04-14 13:47:41 +0300 |
commit | 9b5709ba7546cac4b2a9699a39a7bffa742a0562 (patch) | |
tree | a0e1c7b13b834c52275d5eefa98c9d2ba36c95ef /src | |
parent | 6d8dd815d0a40e894310abe56ee82fc72dcd4be6 (diff) |
add & use SuperWire
Diffstat (limited to 'src')
5 files changed, 31 insertions, 6 deletions
diff --git a/src/main/scala/com/getbootstrap/no_carrier/Main.scala b/src/main/scala/com/getbootstrap/no_carrier/Main.scala index 4642ca7..2ea1728 100644 --- a/src/main/scala/com/getbootstrap/no_carrier/Main.scala +++ b/src/main/scala/com/getbootstrap/no_carrier/Main.scala @@ -6,9 +6,10 @@ import scala.util.Try import com.jcabi.github.{Github, Issue} import com.jcabi.github.Coordinates.{Simple=>RepoId} import com.typesafe.scalalogging.StrictLogging -import com.getbootstrap.no_carrier.util._ import com.getbootstrap.no_carrier.github.{Credentials, FancyIssue} import com.getbootstrap.no_carrier.github.util._ +import com.getbootstrap.no_carrier.http.UserAgent +import com.getbootstrap.no_carrier.util._ case class Arguments( github: Github, @@ -20,6 +21,7 @@ case class Arguments( object Main extends App with StrictLogging { val enabled = false implicit val clock = Clock.systemUTC + implicit val userAgent = new UserAgent("NoCarrier/0.1 (https://github.com/twbs/no-carrier)") val arguments = (args.toSeq match { case Seq(username, password, RepositoryId(repoId), NonEmptyStr(label), IntFromStr(PositiveInt(dayCount))) => { Some(Arguments( diff --git a/src/main/scala/com/getbootstrap/no_carrier/github/Credentials.scala b/src/main/scala/com/getbootstrap/no_carrier/github/Credentials.scala index 7dba1d8..1579aa3 100644 --- a/src/main/scala/com/getbootstrap/no_carrier/github/Credentials.scala +++ b/src/main/scala/com/getbootstrap/no_carrier/github/Credentials.scala @@ -1,10 +1,9 @@ package com.getbootstrap.no_carrier.github import com.jcabi.github.{Github, RtGithub} -import com.jcabi.http.wire.RetryWire +import com.getbootstrap.no_carrier.http.{UserAgent, SuperWire} case class Credentials(username: String, password: String) { private def basicGithub: Github = new RtGithub(username, password) - def github: Github = new RtGithub(basicGithub.entry.through(classOf[RetryWire])) // FIXME: use RetryCarefulWire once it's available - // FIXME: also make use of UserAgentWire + def github(implicit userAgent: UserAgent): Github = new RtGithub(basicGithub.entry.through(classOf[SuperWire], userAgent)) } diff --git a/src/main/scala/com/getbootstrap/no_carrier/http/SuperWire.scala b/src/main/scala/com/getbootstrap/no_carrier/http/SuperWire.scala new file mode 100644 index 0000000..28effd7 --- /dev/null +++ b/src/main/scala/com/getbootstrap/no_carrier/http/SuperWire.scala @@ -0,0 +1,21 @@ +package com.getbootstrap.no_carrier.http + +import java.util.{Collection=>JavaCollection} +import java.util.Map.{Entry=>MapEntry} +import java.io.InputStream +import com.jcabi.http._ +import com.jcabi.http.wire.RetryWire + +case class SuperWire(private val wire: Wire, userAgent: UserAgent) extends Wire { + // FIXME: use RetryCarefulWire once it's available + private val wrappedWire = UserAgentWire(wire = new RetryWire(wire), 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/no_carrier/http/UserAgent.scala b/src/main/scala/com/getbootstrap/no_carrier/http/UserAgent.scala new file mode 100644 index 0000000..2a5c72f --- /dev/null +++ b/src/main/scala/com/getbootstrap/no_carrier/http/UserAgent.scala @@ -0,0 +1,3 @@ +package com.getbootstrap.no_carrier.http + +case class UserAgent(userAgent: String) diff --git a/src/main/scala/com/getbootstrap/no_carrier/http/UserAgentWire.scala b/src/main/scala/com/getbootstrap/no_carrier/http/UserAgentWire.scala index 8ccca2b..31ad2c9 100644 --- a/src/main/scala/com/getbootstrap/no_carrier/http/UserAgentWire.scala +++ b/src/main/scala/com/getbootstrap/no_carrier/http/UserAgentWire.scala @@ -9,7 +9,7 @@ import com.jcabi.http._ object UserAgentWire { private val userAgentHeader = "User-Agent" } -case class UserAgentWire(private val wire: Wire, userAgent: String) extends Wire { +case class UserAgentWire(private val wire: Wire, userAgent: UserAgent) extends Wire { @Override def send( request: Request, @@ -18,7 +18,7 @@ case class UserAgentWire(private val wire: Wire, userAgent: String) extends Wire headers: JavaCollection[MapEntry[String, String]], content: InputStream ): Response = { - val header = new ImmutableHeader(UserAgentWire.userAgentHeader, userAgent) + 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) } |