diff options
author | Chris Rebert <code@rebertia.com> | 2015-07-28 09:01:41 +0300 |
---|---|---|
committer | Chris Rebert <code@rebertia.com> | 2015-07-28 09:01:41 +0300 |
commit | 762b266ee89958a675d0ae66c23a415b52983b19 (patch) | |
tree | 76c8c20b5a1bd7ad310d797065dcc727135e34d9 | |
parent | 448671428a66d778b44517ab3fed997f27812c5f (diff) |
Add GitHub rate limit logging
-rw-r--r-- | src/main/scala/com/getbootstrap/no_carrier/Main.scala | 9 | ||||
-rw-r--r-- | src/main/scala/com/getbootstrap/no_carrier/github/util/package.scala | 13 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/main/scala/com/getbootstrap/no_carrier/Main.scala b/src/main/scala/com/getbootstrap/no_carrier/Main.scala index 4f6843e..4da362c 100644 --- a/src/main/scala/com/getbootstrap/no_carrier/Main.scala +++ b/src/main/scala/com/getbootstrap/no_carrier/Main.scala @@ -45,10 +45,15 @@ object Main extends App with StrictLogging { def main(args: Arguments) { logger.info("Started session.") - val repo = args.github.repos.get(args.repoId) + val github = args.github + val rateLimit = github.rateLimit + val repo = github.repos.get(args.repoId) val waitingOnOp = repo.issues.openWithLabel(args.label) - val opNeverDelivered = waitingOnOp.filter{ issue => new FancyIssue(issue = issue, label = args.label, timeout = args.timeout).opNeverDelivered } + val opNeverDelivered = waitingOnOp.filter{ issue => { + logger.info(s"GitHub rate limit status: ${rateLimit.summary}") + new FancyIssue(issue = issue, label = args.label, timeout = args.timeout).opNeverDelivered + } } val totalClosed = opNeverDelivered.map { issue => if (closeOut(issue, args.timeout)) 1 else 0 }.sum diff --git a/src/main/scala/com/getbootstrap/no_carrier/github/util/package.scala b/src/main/scala/com/getbootstrap/no_carrier/github/util/package.scala index 60d4c5a..81c14f2 100644 --- a/src/main/scala/com/getbootstrap/no_carrier/github/util/package.scala +++ b/src/main/scala/com/getbootstrap/no_carrier/github/util/package.scala @@ -8,6 +8,7 @@ import com.jcabi.github.{Event => IssueEvent, _} import com.jcabi.github.Issue.{Smart=>SmartIssue} import com.jcabi.github.Event.{Smart=>SmartIssueEvent} import com.jcabi.github.Comment.{Smart=>SmartComment} +import com.jcabi.github.Limit.{Smart=>SmartLimit} import com.jcabi.github.Repos.RepoCreate import com.getbootstrap.no_carrier.util.GoogleToScalaOptional @@ -69,4 +70,16 @@ package object util { labels.add(singleton) } } + + implicit class RichGithub(github: Github) { + def rateLimit = new SmartLimit(github.limits.get(Limits.CORE)) + } + + implicit class RichSmartLimit(limit: SmartLimit) { + private def resetTimestamp: String = { + import java.time.format.DateTimeFormatter.ISO_INSTANT + ISO_INSTANT.format(limit.reset.toInstant) + } + def summary: String = s"[${limit.remaining}/${limit.limit}] (resets @ ${resetTimestamp})" + } } |