All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.codacy.client.bitbucket.v2.BaseCommit.scala Maven / Gradle / Ivy

There is a newer version: 19.0.7
Show newest version
package com.codacy.client.bitbucket.v2

import play.api.libs.json._

import java.time.LocalDateTime

case class BaseCommit(hash: String, parents: Seq[String], date: LocalDateTime, message: String, author: Author)

object BaseCommit {

  implicit val dateTimeReads: Reads[LocalDateTime] = Reads.localDateTimeReads("yyyy-MM-dd'T'HH:mm:ssXXX", identity)

  implicit def commitReader: Reads[BaseCommit] = Reads { (json: JsValue) =>
    (for {
      hash <- (json \ "hash").asOpt[String]
      parents = (json \ "parents" \\ "hash").flatMap(_.asOpt[String])
      date <- (json \ "date").asOpt[LocalDateTime]
      message <- (json \ "message").asOpt[String]
      author <- (json \ "author").asOpt[Author]
    } yield BaseCommit(hash, parents.toSeq /*cross-compile*/, date, message, author))
      .map(JsSuccess(_))
      .getOrElse(JsError("could not read commit"))
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy