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

wei-k.ghscala_2.10.0.5.0.source-code.Commit.scala Maven / Gradle / Ivy

package ghscala

final case class Commit(
  tree      :Commit.Tree,
  message   :String,
  url       :String,
  author    :Commit.User,
  committer :Commit.User
)

final case class CommitResponse(
  stats     :Stats,
  commit    :Commit,
  url       :String,
  sha       :String,
  author    :User,
  committer :User,
  files     :List[File],
  parents   :List[Commit.Tree]
) extends JsonToString[CommitResponse]

object CommitResponse {

  implicit val commitResponseCodecJson: CodecJson[CommitResponse] =
    CodecJson.casecodec8(apply, unapply)(
      "stats", "commit", "url", "sha", "author",
      "committer", "files", "parents"
    )

}

final case class File(
  deletions :Long,
  changes   :Long,
  additions :Long,
  status    :String,
  raw_url   :String,
  filename  :String,
  blob_url  :String,
  patch     :String,
  sha       :String
)

object File {

  implicit val fileCodecJson: CodecJson[File] =
    CodecJson.casecodec9(apply, unapply)(
      "deletions", "changes", "additions", "status", "raw_url",
      "filename", "blob_url", "patch", "sha"
    )

}

object Commit{

  final case class Tree(
    sha :String,
    url :String
  ) extends JsonToString[Tree]

  object Tree {
    implicit val treeCodecJson: CodecJson[Tree] =
      CodecJson.casecodec2(apply, unapply)("sha", "url")
  }

  final case class User(
    email :String,
    date  :String,
    name  :String
  ) extends JsonToString[User]

  object User {
    implicit val userCodecJson: CodecJson[User] =
      CodecJson.casecodec3(apply, unapply)("email", "date", "name")
  }


  implicit val commitCodecJson: CodecJson[Commit] =
    CodecJson.casecodec5(apply, unapply)(
      "tree", "message", "url", "author", "committer"
    )

}

final case class Stats(
  total     :Long,
  deletions :Long,
  additions :Long
) extends JsonToString[Stats]

object Stats {

  implicit val statsCodecJson: CodecJson[Stats] =
    CodecJson.casecodec3(apply, unapply)(
      "total", "deletions", "additions"
    )

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy