diff options
author | Chris Rebert <code@rebertia.com> | 2015-07-28 06:04:05 +0300 |
---|---|---|
committer | Chris Rebert <code@rebertia.com> | 2015-07-28 06:04:05 +0300 |
commit | d20339d44479f2c5648590907b3be8fc1a9191ad (patch) | |
tree | c9e6178b8b6ca3109d3f26c5b222f448ccb318b4 /src | |
parent | 8f87721eb7f0f3cfb0be68e018552583b4aee943 (diff) |
Fix typing of label name equality check in RichIssue.lastLabelledWithAt
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/com/getbootstrap/no_carrier/github/util/package.scala | 17 | ||||
-rw-r--r-- | src/main/scala/com/getbootstrap/no_carrier/util/package.scala | 12 |
2 files changed, 17 insertions, 12 deletions
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 40941f3..60d4c5a 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 @@ -2,14 +2,14 @@ package com.getbootstrap.no_carrier.github import java.util.EnumMap import java.time.Instant -import javax.json.JsonObject -import scala.util.{Try,Success} +import scala.util.Try import scala.collection.JavaConverters._ -import com.jcabi.github.{Event => IssueEvent, Issue, Issues, IssueLabels, Comment, Search, Repo, Repos} +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.Repos.RepoCreate +import com.getbootstrap.no_carrier.util.GoogleToScalaOptional package object util { implicit class RichIssues(issues: Issues) { @@ -28,7 +28,7 @@ package object util { def commentsIterable: Iterable[Comment] = issue.comments.iterate.asScala def lastLabelledWithAt(label: String): Option[Instant] = { - val labellings = issue.smartEvents.filter{ event => event.isLabeled && event.label == Some(label) } + val labellings = issue.smartEvents.filter{ event => event.labelOption.exists{ _.name == label } } labellings.lastOption.map{ _.createdAt.toInstant } } } @@ -48,14 +48,7 @@ package object util { } implicit class RichSmartIssueEvent(event: SmartIssueEvent) { - def isLabeled: Boolean = event.`type` == IssueEvent.LABELED - - def label: Option[String] = { - // FIXME: Use event.label.name once jcabi-github 0.24+ is available - Try {Option[JsonObject](event.json.getJsonObject("label")).map {_.getString("name")}}.recoverWith { - case _: ClassCastException => Success(None) - }.get - } + def labelOption: Option[Label] = event.label.toOption } implicit class RichComment(comment: Comment) { diff --git a/src/main/scala/com/getbootstrap/no_carrier/util/package.scala b/src/main/scala/com/getbootstrap/no_carrier/util/package.scala index fcdce67..ef0297d 100644 --- a/src/main/scala/com/getbootstrap/no_carrier/util/package.scala +++ b/src/main/scala/com/getbootstrap/no_carrier/util/package.scala @@ -1,6 +1,7 @@ package com.getbootstrap.no_carrier import java.time.{Clock, Instant, Duration} +import com.google.common.base.{Optional=>GuavaOptional} package object util { val InstantOrdering = implicitly[Ordering[Instant]] @@ -15,4 +16,15 @@ package object util { deadline < now } } + + implicit class GoogleToScalaOptional[T](option: GuavaOptional[T]) { + def toOption: Option[T] = { + if (option.isPresent) { + Some(option.get()) + } + else { + None + } + } + } } |