@@ -41,7 +41,13 @@ object ApiUrlType extends Enumeration {
41
41
}
42
42
}
43
43
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
+ }
45
51
46
52
object PullRequest {
47
53
val dateFormat = " yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"
@@ -70,15 +76,14 @@ object PullRequest {
70
76
(__ \ " destination" \ " branch" \ " name" ).read[String ] and
71
77
(__ \ " destination" \ " commit" \ " hash" ).readNullable[String ] and
72
78
// 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)
74
80
) (PullRequest .apply _)
75
81
// format: on
76
82
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)
83
88
}
84
89
}
0 commit comments