forked from code-check/github-api-scala
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRepository.scala
84 lines (69 loc) · 2.51 KB
/
Repository.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package codecheck.github.models
import java.net.URL
import org.json4s.JValue
import codecheck.github.utils.ToDo
sealed abstract class RepositoryListType(val name: String) {
override def toString = name
}
object RepositoryListType {
case object all extends RepositoryListType("all")
case object owner extends RepositoryListType("owner")
case object public extends RepositoryListType("public")
case object private_ extends RepositoryListType("private")
case object member extends RepositoryListType("member")
case object forks extends RepositoryListType("forks")
case object sources extends RepositoryListType("sources")
val values = Array(all, owner, public, private_, member, forks, sources)
def fromString(str: String) = if (str == "private") {
private_
} else {
values.filter(_.name == str).head
}
}
sealed abstract class RepositorySort(val name: String) {
override def toString = name
}
object RepositorySort {
case object created extends RepositorySort("created")
case object updated extends RepositorySort("updated")
case object pushed extends RepositorySort("pushed")
case object full_name extends RepositorySort("full_name")
val values = Array(created, updated, pushed, full_name)
def fromString(str: String) = values.filter(_.name == str).head
}
case class RepositoryListOption(
listType: RepositoryListType = RepositoryListType.all,
sort: RepositorySort = RepositorySort.full_name,
direction: SortDirection = SortDirection.asc
)
case class RepositoryInput(
name: String,
description: Option[String] = None,
homepage: Option[URL] = None,
`private`: Boolean = false,
has_issues: Boolean = true,
has_wiki: Boolean = true,
has_downloads: Boolean = true,
team_id: Option[Int] = None,
auto_init: Boolean = false,
gitignore_template: Option[String] = None,
license_template: Option[String] = None
) extends AbstractInput
case class Repository(value: JValue) extends AbstractJson(value) {
def id = get("id").toLong
def name = get("name")
def full_name = get("full_name")
def url = get("url")
def language = get("language")
def stargazers_count = get("stargazers_count").toLong
def description = opt("description")
def open_issues_count = get("open_issues_count").toLong
def `private` = boolean("private")
lazy val permissions = Permissions(value \ "permissions")
lazy val owner = User(value \ "owner")
}
case class Permissions(value: JValue) extends AbstractJson(value) {
def admin = boolean("admin")
def push = boolean("push")
def pull = boolean("pull")
}