Skip to content

Commit 5389460

Browse files
committed
Parse links to single map on pullRequest
1 parent 53d3482 commit 5389460

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/main/scala/com/codacy/client/bitbucket/v2/PullRequest.scala

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,13 @@ object ApiUrlType extends Enumeration {
4141
}
4242
}
4343

44-
case class ApiUrl(urlType: ApiUrlType.Value, link: String)
44+
case class ApiUrl(urlType: ApiUrlType.Value, link: Link)
45+
46+
case class Link(href: String)
47+
48+
object Link {
49+
implicit val reader: Reads[Link] = Json.format[Link]
50+
}
4551

4652
object PullRequest {
4753
val dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"
@@ -70,15 +76,14 @@ object PullRequest {
7076
(__ \ "destination" \ "branch" \ "name").read[String] and
7177
(__ \ "destination" \ "commit" \ "hash").readNullable[String] and
7278
// TODO: (__ \ "destination" \ "commit" \ "hash").read[Option[String]] and
73-
(__ \ "links").read[Map[String, Map[String, String]]].map(parseLinks)
79+
(__ \ "links").read[Map[String, Link]].map(parseLinks)
7480
) (PullRequest.apply _)
7581
// format: on
7682

77-
private def parseLinks(links: Map[String, Map[String, String]]): Seq[ApiUrl] = {
78-
(for {
79-
(linkName, linkMap) <- links
80-
urlType <- ApiUrlType.find(linkName)
81-
linkUrl <- linkMap.get("href")
82-
} yield ApiUrl(urlType, linkUrl)).toSeq
83+
private def parseLinks(links: Map[String, Link]): Seq[ApiUrl] = {
84+
links.flatMap {
85+
case (linkTypeStr, link) =>
86+
ApiUrlType.find(linkTypeStr).map(ApiUrl(_, link))
87+
}(collection.breakOut)
8388
}
8489
}

0 commit comments

Comments
 (0)