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

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

package ghscala

final case class Gist(
  comments     :Long,
  comments_url :String,
  commits_url  :String,
  created_at   :String,
  description  :String,
  files        :Map[String, Gist.File],
  forks        :List[Gist.Fork],
  forks_url    :String,
  git_pull_url :String,
  git_push_url :String,
  history      :List[Gist.History],
  html_url     :String,
  id           :String,
  public       :Boolean,
  updated_at   :String,
  url          :String,
  user         :User
)

object Gist {

  implicit val gistCodecJson: CodecJson[Gist] =
    CodecJson.casecodec17(apply, unapply)(
      "comments", "comments_url", "commits_url", "created_at", "description",
      "files", "forks", "forks_url", "git_pull_url", "git_push_url", "history",
      "html_url", "id", "public", "updated_at", "url", "user"
    )

  final case class History(
    url           :String,
    version       :String,
    user          :User,
    change_status :Gist.ChangeStatus,
    committed_at  :String
  ) extends JsonToString[History]

  object History {
    implicit val historyCodecJson: CodecJson[History] =
      CodecJson.casecodec5(apply, unapply)(
        "url", "version", "user", "change_status", "committed_at"
      )
  }

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

  object ChangeStatus {
    implicit val changeStatusCodecJson: CodecJson[ChangeStatus] =
      CodecJson.casecodec3(apply, unapply)(
        "additions", "deletions", "total"
      )
  }

  final case class File(
    filename :String,
    language :Option[String],
    _type    :String,
    raw_url  :String,
    size     :Long,
    content  :String
  ) extends JsonToString[File]

  object File {
    implicit val fileCodecJson: CodecJson[File] =
      CodecJson.casecodec6(apply, unapply)(
        "filename", "language", "type", "raw_url", "size", "content"
      )
  }

  final case class Fork(
    id         :String,
    url        :String,
    user       :User,
    created_at :String,
    updated_at :String
  ) extends JsonToString[Fork]

  object Fork {
    implicit val forkJson: CodecJson[Fork] =
      CodecJson.casecodec5(apply, unapply)(
        "id", "url", "user", "created_at", "updated_at"
      )
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy