ghee 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +324 -1
- data/lib/ghee.rb +9 -2
- data/lib/ghee/api/collaborators.rb +37 -0
- data/lib/ghee/api/commits.rb +66 -0
- data/lib/ghee/api/emails.rb +30 -0
- data/lib/ghee/api/followers.rb +31 -0
- data/lib/ghee/api/forks.rb +34 -0
- data/lib/ghee/api/git_data.rb +8 -10
- data/lib/ghee/api/hooks.rb +45 -0
- data/lib/ghee/api/issues.rb +90 -75
- data/lib/ghee/api/keys.rb +56 -0
- data/lib/ghee/api/labels.rb +38 -0
- data/lib/ghee/api/milestones.rb +40 -22
- data/lib/ghee/api/repos.rb +0 -74
- data/lib/ghee/api/watchers.rb +41 -0
- data/lib/ghee/resource_proxy.rb +1 -1
- data/lib/ghee/version.rb +1 -1
- data/spec/ghee/api/collaborators_spec.rb +14 -0
- data/spec/ghee/api/gitdata_spec.rb +12 -0
- data/spec/ghee/api/issues_spec.rb +1 -1
- data/spec/ghee/api/milestones_spec.rb +1 -1
- data/spec/ghee/api/users_spec.rb +14 -0
- metadata +35 -24
@@ -0,0 +1,66 @@
|
|
1
|
+
class Ghee
|
2
|
+
|
3
|
+
# API module encapsulates all of API endpoints
|
4
|
+
# implemented thus far
|
5
|
+
#
|
6
|
+
module API
|
7
|
+
|
8
|
+
# The Repos module handles all of the Github Repo
|
9
|
+
# API endpoints
|
10
|
+
#
|
11
|
+
module Repos
|
12
|
+
|
13
|
+
module Commits
|
14
|
+
class Proxy < ::Ghee::ResourceProxy
|
15
|
+
|
16
|
+
def comments
|
17
|
+
Ghee::API::Repos::Commits::Comments::Proxy.new connection, path_prefix
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module Comments
|
22
|
+
class Proxy < ::Ghee::ResourceProxy
|
23
|
+
|
24
|
+
def create(attributes)
|
25
|
+
connection.post(path_prefix, attributes).body
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module Comments
|
32
|
+
class Proxy < ::Ghee::ResourceProxy
|
33
|
+
|
34
|
+
def patch(attibutes)
|
35
|
+
connection.patch(path_prefix, attibutes).body
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy
|
39
|
+
connection.delete(path_prefix).status == 204
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Gists::Proxy inherits from Ghee::Proxy and
|
46
|
+
# enables defining methods on the proxy object
|
47
|
+
#
|
48
|
+
class Proxy < ::Ghee::ResourceProxy
|
49
|
+
def compare(base, head)
|
50
|
+
connection.get("#{path_prefix}/compare/#{base}...#{head}").body
|
51
|
+
end
|
52
|
+
def commits(sha=nil, params={})
|
53
|
+
params = sha if sha.is_a?Hash
|
54
|
+
prefix = (!sha.is_a?(Hash) and sha) ? "#{path_prefix}/commits/#{sha}" : "#{path_prefix}/commits"
|
55
|
+
Ghee::API::Repos::Commits::Proxy.new(connection, prefix, params)
|
56
|
+
end
|
57
|
+
def comments(id=nil)
|
58
|
+
prefix = id ? "#{path_prefix}/comments/#{id}" : "#{path_prefix}/comments"
|
59
|
+
Ghee::API::Repos::Comments::Proxy.new connection, prefix
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Ghee
|
2
|
+
|
3
|
+
# API module encapsulates all of API endpoints
|
4
|
+
# implemented thus far
|
5
|
+
#
|
6
|
+
module API
|
7
|
+
|
8
|
+
module Users
|
9
|
+
module Emails
|
10
|
+
class Proxy < ::Ghee::ResourceProxy
|
11
|
+
|
12
|
+
def add(emails)
|
13
|
+
connection.post(path_prefix, emails).body
|
14
|
+
end
|
15
|
+
|
16
|
+
def remove(emails)
|
17
|
+
connection.run_request(:delete,path_prefix, emails,nil).status == 204
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
class Proxy < ::Ghee::ResourceProxy
|
22
|
+
def emails
|
23
|
+
Ghee::API::Users::Emails::Proxy.new connection, "#{path_prefix}/emails"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Ghee
|
2
|
+
|
3
|
+
# API module encapsulates all of API endpoints
|
4
|
+
# implemented thus far
|
5
|
+
#
|
6
|
+
module API
|
7
|
+
|
8
|
+
module Users
|
9
|
+
class Proxy < ::Ghee::ResourceProxy
|
10
|
+
def followers
|
11
|
+
connection.get("#{path_prefix}/followers").body
|
12
|
+
end
|
13
|
+
def following
|
14
|
+
connection.get("#{path_prefix}/following").body
|
15
|
+
end
|
16
|
+
def following?(user)
|
17
|
+
connection.get("#{path_prefix}/following/#{user}").status == 204
|
18
|
+
end
|
19
|
+
def follow(user)
|
20
|
+
connection.put("#{path_prefix}/following/#{user}").status == 204
|
21
|
+
end
|
22
|
+
def follow!(user)
|
23
|
+
connection.delete("#{path_prefix}/following/#{user}").status == 204
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class Ghee
|
2
|
+
|
3
|
+
# API module encapsulates all of API endpoints
|
4
|
+
# implemented thus far
|
5
|
+
#
|
6
|
+
module API
|
7
|
+
|
8
|
+
# The Repos module handles all of the Github Repo
|
9
|
+
# API endpoints
|
10
|
+
#
|
11
|
+
module Repos
|
12
|
+
|
13
|
+
module Forks
|
14
|
+
class Proxy < ::Ghee::ResourceProxy
|
15
|
+
def create(org=nil)
|
16
|
+
params = org ? {:org => org} : {}
|
17
|
+
puts params
|
18
|
+
connection.post(path_prefix, params).body
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Gists::Proxy inherits from Ghee::Proxy and
|
24
|
+
# enables defining methods on the proxy object
|
25
|
+
#
|
26
|
+
class Proxy < ::Ghee::ResourceProxy
|
27
|
+
def forks(params={})
|
28
|
+
Ghee::API::Repos::Forks::Proxy.new connection, "#{path_prefix}/forks", params
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
data/lib/ghee/api/git_data.rb
CHANGED
@@ -10,14 +10,6 @@ class Ghee
|
|
10
10
|
#
|
11
11
|
module Repos
|
12
12
|
|
13
|
-
# The Commits module handles repo commit endpoints
|
14
|
-
#
|
15
|
-
module Commits
|
16
|
-
class Proxy < ::Ghee::ResourceProxy
|
17
|
-
include Ghee::CUD
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
13
|
# The Git module handles all of the raw git data endpoints
|
22
14
|
#
|
23
15
|
module Git
|
@@ -89,9 +81,9 @@ class Ghee
|
|
89
81
|
|
90
82
|
# Get tree by a given sha
|
91
83
|
#
|
92
|
-
def trees(sha=nil)
|
84
|
+
def trees(sha=nil,params={})
|
93
85
|
prefix = sha ? "#{path_prefix}/trees/#{sha}" : "#{path_prefix}/trees"
|
94
|
-
Ghee::API::Repos::Git::Trees::Proxy.new(connection, prefix)
|
86
|
+
Ghee::API::Repos::Git::Trees::Proxy.new(connection, prefix, params)
|
95
87
|
end
|
96
88
|
|
97
89
|
# Get a tag by a given sha
|
@@ -102,6 +94,12 @@ class Ghee
|
|
102
94
|
end
|
103
95
|
end
|
104
96
|
end
|
97
|
+
class Proxy < :: Ghee::ResourceProxy
|
98
|
+
|
99
|
+
def git
|
100
|
+
Ghee::API::Repos::Git::Proxy.new(connection, "#{path_prefix}/git")
|
101
|
+
end
|
102
|
+
end
|
105
103
|
end
|
106
104
|
end
|
107
105
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Ghee
|
2
|
+
|
3
|
+
# API module encapsulates all of API endpoints
|
4
|
+
# implemented thus far
|
5
|
+
#
|
6
|
+
module API
|
7
|
+
|
8
|
+
# The Repos module handles all of the Github Repo
|
9
|
+
# API endpoints
|
10
|
+
#
|
11
|
+
module Repos
|
12
|
+
|
13
|
+
|
14
|
+
module Hooks
|
15
|
+
class Proxy < ::Ghee::ResourceProxy
|
16
|
+
include Ghee::CUD
|
17
|
+
|
18
|
+
# Test hook - This will trigger the hook with the
|
19
|
+
# latest push to the current repository.
|
20
|
+
#
|
21
|
+
def test
|
22
|
+
connection.post("#{path_prefix}/test").body
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Gists::Proxy inherits from Ghee::Proxy and
|
30
|
+
# enables defining methods on the proxy object
|
31
|
+
#
|
32
|
+
class Proxy < ::Ghee::ResourceProxy
|
33
|
+
# Get hooks
|
34
|
+
#
|
35
|
+
# Returns json
|
36
|
+
#
|
37
|
+
def hooks(number=nil, params={})
|
38
|
+
params = number if number.is_a?Hash
|
39
|
+
prefix = (!number.is_a?(Hash) and number) ? "#{path_prefix}/hooks/#{number}" : "#{path_prefix}/hooks"
|
40
|
+
Ghee::API::Repos::Hooks::Proxy.new(connection, prefix, params)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/ghee/api/issues.rb
CHANGED
@@ -5,108 +5,123 @@ class Ghee
|
|
5
5
|
#
|
6
6
|
module API
|
7
7
|
|
8
|
+
module Repos
|
8
9
|
|
9
|
-
|
10
|
-
# API endpoints
|
11
|
-
#
|
12
|
-
module Issues
|
13
|
-
|
14
|
-
# API labels module handles all of the Github Issues
|
10
|
+
# The Issues module handles all of the Github Repo Issues
|
15
11
|
# API endpoints
|
16
12
|
#
|
17
|
-
module
|
13
|
+
module Issues
|
14
|
+
|
15
|
+
# API labels module handles all of the Github Issues
|
16
|
+
# API endpoints
|
17
|
+
#
|
18
|
+
module Labels
|
19
|
+
class Proxy < ::Ghee::ResourceProxy
|
20
|
+
|
21
|
+
# Creates label for an issue using the authenicated user
|
22
|
+
#
|
23
|
+
# labels - Array of labels
|
24
|
+
#
|
25
|
+
# return json
|
26
|
+
#
|
27
|
+
def add(labels)
|
28
|
+
connection.post(path_prefix,labels).body
|
29
|
+
end
|
30
|
+
|
31
|
+
# Patchs and existing label
|
32
|
+
#
|
33
|
+
# return json
|
34
|
+
#
|
35
|
+
def replace(labels)
|
36
|
+
connection.put(path_prefix, labels).body
|
37
|
+
end
|
38
|
+
|
39
|
+
# Destroys label by id
|
40
|
+
#
|
41
|
+
# return boolean
|
42
|
+
#
|
43
|
+
def remove
|
44
|
+
connection.delete(path_prefix).status == 204
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# API Comments module handles all of the Github Issues
|
50
|
+
# API endpoints
|
51
|
+
#
|
52
|
+
module Comments
|
53
|
+
class Proxy < ::Ghee::ResourceProxy
|
54
|
+
include Ghee::CUD
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
module Events
|
59
|
+
class Proxy < ::Ghee::ResourceProxy
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Gists::Proxy inherits from Ghee::Proxy and
|
65
|
+
# enables defining methods on the proxy object
|
66
|
+
#
|
18
67
|
class Proxy < ::Ghee::ResourceProxy
|
68
|
+
include Ghee::CUD
|
19
69
|
|
20
|
-
#
|
70
|
+
# Close issue - closed issue by id
|
21
71
|
#
|
22
|
-
#
|
72
|
+
# usage - ghee.repos("my_repo").issues(1).close
|
23
73
|
#
|
24
|
-
#
|
74
|
+
# returns boolean
|
25
75
|
#
|
26
|
-
def
|
27
|
-
connection.
|
76
|
+
def close
|
77
|
+
connection.patch(path_prefix,:state => "closed").body["state"] == "closed"
|
28
78
|
end
|
29
79
|
|
30
|
-
#
|
80
|
+
# Returns closed issues
|
31
81
|
#
|
32
|
-
#
|
82
|
+
# Returns json
|
33
83
|
#
|
34
|
-
def
|
35
|
-
connection.
|
84
|
+
def closed
|
85
|
+
response = connection.get path_prefix do |req|
|
86
|
+
req.params["state"] = "closed"
|
87
|
+
end
|
88
|
+
response.body
|
36
89
|
end
|
37
90
|
|
38
|
-
#
|
39
|
-
#
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
connection.delete(path_prefix).status == 204
|
91
|
+
# Returns issue comments for an issue or all of the comments
|
92
|
+
# for a repo
|
93
|
+
def comments(id=nil)
|
94
|
+
prefix = id ? "#{path_prefix}/comments/#{id}" : "#{path_prefix}/comments"
|
95
|
+
Ghee::API::Repos::Issues::Comments::Proxy.new(connection,prefix)
|
44
96
|
end
|
45
|
-
end
|
46
|
-
end
|
47
97
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
include Ghee::CUD
|
54
|
-
end
|
55
|
-
end
|
98
|
+
# Returns all of the labels for repo
|
99
|
+
#
|
100
|
+
def labels
|
101
|
+
Ghee::API::Repos::Issues::Labels::Proxy.new(connection, "#{path_prefix}/labels")
|
102
|
+
end
|
56
103
|
|
57
|
-
|
58
|
-
|
104
|
+
# Returns issue events for a repo or issue number
|
105
|
+
#
|
106
|
+
def events(id=nil)
|
107
|
+
prefix = id ? "#{path_prefix}/events/#{id}" : "#{path_prefix}/events"
|
108
|
+
Ghee::API::Repos::Issues::Events::Proxy.new(connection,prefix)
|
109
|
+
end
|
59
110
|
|
60
111
|
end
|
61
112
|
end
|
62
113
|
|
63
|
-
# Gists::Proxy inherits from Ghee::Proxy and
|
64
|
-
# enables defining methods on the proxy object
|
65
|
-
#
|
66
114
|
class Proxy < ::Ghee::ResourceProxy
|
67
|
-
include Ghee::CUD
|
68
115
|
|
69
|
-
#
|
70
|
-
#
|
71
|
-
# usage - ghee.repos("my_repo").issues(1).close
|
72
|
-
#
|
73
|
-
# returns boolean
|
74
|
-
#
|
75
|
-
def close
|
76
|
-
connection.patch(path_prefix,:state => "closed").body["state"] == "closed"
|
77
|
-
end
|
78
|
-
|
79
|
-
# Returns closed issues
|
116
|
+
# Get issues
|
80
117
|
#
|
81
118
|
# Returns json
|
82
119
|
#
|
83
|
-
def
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
response.body
|
88
|
-
end
|
89
|
-
|
90
|
-
# Returns issue comments for an issue or all of the comments
|
91
|
-
# for a repo
|
92
|
-
def comments(id=nil)
|
93
|
-
prefix = id ? "#{path_prefix}/comments/#{id}" : "#{path_prefix}/comments"
|
94
|
-
Ghee::API::Issues::Comments::Proxy.new(connection,prefix)
|
120
|
+
def issues(number=nil, params={})
|
121
|
+
params = number if number.is_a?Hash
|
122
|
+
prefix = (!number.is_a?(Hash) and number) ? "#{path_prefix}/issues/#{number}" : "#{path_prefix}/issues"
|
123
|
+
Ghee::API::Repos::Issues::Proxy.new(connection, prefix, params)
|
95
124
|
end
|
96
|
-
|
97
|
-
# Returns all of the labels for repo
|
98
|
-
#
|
99
|
-
def labels
|
100
|
-
Ghee::API::Issues::Labels::Proxy.new(connection, "#{path_prefix}/labels")
|
101
|
-
end
|
102
|
-
|
103
|
-
# Returns issue events for a repo or issue number
|
104
|
-
#
|
105
|
-
def events(id=nil)
|
106
|
-
prefix = id ? "#{path_prefix}/events/#{id}" : "#{path_prefix}/events"
|
107
|
-
Ghee::API::Issues::Events::Proxy.new(connection,prefix)
|
108
|
-
end
|
109
|
-
|
110
125
|
end
|
111
126
|
end
|
112
127
|
end
|