Skip to content

Commit b191fe8

Browse files
committed
Merge pull request #13 from codacy/improve/statusEnum
Make build status as enum
2 parents 559b4d8 + d115c9b commit b191fe8

File tree

4 files changed

+39
-3
lines changed

4 files changed

+39
-3
lines changed

src/main/scala/com/codacy/client/bitbucket/BuildStatus.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package com.codacy.client.bitbucket
22

3-
import play.api.libs.json._
3+
import com.codacy.client.bitbucket.util.JsonEnumeration
4+
import play.api.libs.json.Json
45

5-
case class BuildStatus(state: String, key: String, name: String, url: String, description: String)
6+
object CommitStatus extends JsonEnumeration {
7+
val InProgress = Value("INPROGRESS")
8+
val Successful = Value("SUCCESSFUL")
9+
val Failed = Value("FAILED")
10+
}
11+
12+
case class BuildStatus(state: CommitStatus.Value, key: String, name: String, url: String, description: String)
613

714
object BuildStatus {
815
implicit val fmt = Json.format[BuildStatus]

src/main/scala/com/codacy/client/bitbucket/service/BuildStatusServices.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class BuildStatusServices(client: BitbucketClient) {
2424
def createBuildStatus(owner: String, repository: String, commit: String, buildStatus: BuildStatus): RequestResponse[BuildStatus] = {
2525
val url = s"https://bitbucket.org/!api/2.0/repositories/$owner/$repository/commit/$commit/statuses/build"
2626

27-
val values = Map("state" -> Seq(buildStatus.state), "key" -> Seq(buildStatus.key),
27+
val values = Map("state" -> Seq(buildStatus.state.toString), "key" -> Seq(buildStatus.key),
2828
"name" -> Seq(buildStatus.name), "url" -> Seq(buildStatus.url),
2929
"description" -> Seq(buildStatus.description))
3030

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.codacy.client.bitbucket.util
2+
3+
import play.api.data.validation.ValidationError
4+
import play.api.libs.json.{Json, Reads, Writes}
5+
import scala.language.implicitConversions
6+
7+
object Implicits {
8+
9+
implicit def enumWrites[E <: Enumeration#Value]: Writes[E] = Writes((e: E) => Json.toJson(e.toString))
10+
11+
implicit def enumReads[E <: Enumeration](e: E): Reads[e.Value] = {
12+
Reads.StringReads.map { case value => e.values.find(_.toString == value) }.
13+
collect(ValidationError("Invalid enumeration value")) { case Some(v) => v }
14+
}
15+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.codacy.client.bitbucket.util
2+
3+
import play.api.libs.json.Format
4+
5+
trait JsonEnumeration extends Enumeration {
6+
self: Enumeration =>
7+
8+
implicit lazy val format = Format(Implicits.enumReads(self), Implicits.enumWrites)
9+
10+
def findByName(name: String): Option[Value] = {
11+
values.find(p => p.toString.toLowerCase == name.toLowerCase)
12+
}
13+
14+
}

0 commit comments

Comments
 (0)