ghee 0.7.1 → 0.8.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/.gitignore +1 -0
- data/.travis.yml +15 -0
- data/LICENSE +4 -2
- data/README.md +35 -10
- data/Rakefile +1 -1
- data/ghee.gemspec +1 -0
- data/lib/ghee/api/downloads.rb +57 -0
- data/lib/ghee/api/git_data.rb +107 -0
- data/lib/ghee/api/issues.rb +17 -0
- data/lib/ghee/api/repos.rb +10 -0
- data/lib/ghee/connection.rb +1 -1
- data/lib/ghee/resource_proxy.rb +3 -3
- data/lib/ghee/version.rb +1 -1
- data/lib/ghee.rb +2 -0
- data/spec/fyeah.jpg +0 -0
- data/spec/ghee/api/authorizations_spec.rb +9 -7
- data/spec/ghee/api/downloads_spec.rb +49 -0
- data/spec/ghee/api/gitdata_spec.rb +134 -0
- data/spec/ghee/api/issues_spec.rb +14 -0
- data/spec/ghee/api/milestones_spec.rb +8 -6
- data/spec/ghee/api/repos_spec.rb +35 -37
- data/spec/ghee/api/teams_spec.rb +4 -4
- data/spec/spec_helper.rb +8 -4
- metadata +42 -23
- data/.rspec +0 -0
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License
|
2
2
|
|
3
|
-
Copyright (c) Jonathan Hoyt
|
3
|
+
Copyright (c) Jonathan Hoyt, Ryan Rauh
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -18,4 +18,6 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
-
THE SOFTWARE.
|
21
|
+
THE SOFTWARE.
|
22
|
+
|
23
|
+
|
data/README.md
CHANGED
@@ -3,8 +3,7 @@ Ghee
|
|
3
3
|
|
4
4
|
This is an unofficial ruby client for the [GitHub API](http://developer.github.com/v3/). The end goal is a complete, simple, and intuitive ruby API for all things Github.
|
5
5
|
|
6
|
-
Usage
|
7
|
-
-----
|
6
|
+
# Usage
|
8
7
|
|
9
8
|
Instantiate the client with basic auth:
|
10
9
|
|
@@ -19,7 +18,7 @@ Create an OAuth access token:
|
|
19
18
|
user_name, password, scopes = "rauhryan", "secret", "repos, user"
|
20
19
|
token = Ghee.create_token(user_name, password, scopes)
|
21
20
|
|
22
|
-
|
21
|
+
## Gists
|
23
22
|
|
24
23
|
List a user's gists:
|
25
24
|
|
@@ -80,12 +79,14 @@ Delete a gist:
|
|
80
79
|
|
81
80
|
gh.gists("1393990").destroy
|
82
81
|
|
83
|
-
|
82
|
+
## Repos
|
84
83
|
|
85
84
|
Get a single repo:
|
86
85
|
|
87
86
|
gh.repos("rauhryan", "ghee")
|
88
87
|
|
88
|
+
### Hooks
|
89
|
+
|
89
90
|
Get the hooks for a repo:
|
90
91
|
|
91
92
|
gh.repos("rauhryan", "ghee").hooks
|
@@ -112,6 +113,26 @@ Destroy a hook for a repo:
|
|
112
113
|
|
113
114
|
gh.repos("rauhryan", "ghee").hooks(1).destory
|
114
115
|
|
116
|
+
### Downloads
|
117
|
+
|
118
|
+
Get the downloads for a repo:
|
119
|
+
|
120
|
+
gh.repos("rauhryan", "ghee").downloads
|
121
|
+
|
122
|
+
Get a single download for a repo:
|
123
|
+
|
124
|
+
gh.repos("rauhryan", "ghee").downloads(12)
|
125
|
+
|
126
|
+
Create a download for a repo:
|
127
|
+
|
128
|
+
gh.repos("rauhryan", "ghee").downloads.create("/path/to/file","description")
|
129
|
+
|
130
|
+
Destroy a download for a repo:
|
131
|
+
|
132
|
+
gh.repos("rauhryan", "ghee").downloads.destroy
|
133
|
+
|
134
|
+
### Milestones
|
135
|
+
|
115
136
|
Get the milestones for a repo:
|
116
137
|
|
117
138
|
gh.repos("rauhryan", "ghee").milestones
|
@@ -137,6 +158,8 @@ Destroy a milestone for a repo:
|
|
137
158
|
|
138
159
|
gh.repos("rauhryan", "ghee").milestones(1).destory
|
139
160
|
|
161
|
+
### Issues
|
162
|
+
|
140
163
|
Get the issues for a repo:
|
141
164
|
|
142
165
|
gh.repos("rauhryan", "ghee").issues
|
@@ -166,6 +189,8 @@ Get the closed issues for a repo:
|
|
166
189
|
|
167
190
|
gh.repos("rauhryan", "ghee").issues(12).closed
|
168
191
|
|
192
|
+
### Comments
|
193
|
+
|
169
194
|
Get the comments for an issue:
|
170
195
|
|
171
196
|
gh.repos("rauhryan", "ghee").issues(12).comments
|
@@ -187,7 +212,7 @@ Destroy a comment for an issue
|
|
187
212
|
|
188
213
|
gh.repos("rauhryan", "ghee").issues.comments(482910).destroy
|
189
214
|
|
190
|
-
|
215
|
+
## Orgs
|
191
216
|
|
192
217
|
Get a list of orgs for the current user:
|
193
218
|
|
@@ -239,7 +264,7 @@ Remove a member from a team:
|
|
239
264
|
|
240
265
|
gh.orgs("huboard").teams(110234).members.remove("rauhryan")
|
241
266
|
|
242
|
-
|
267
|
+
## Teams
|
243
268
|
|
244
269
|
Get a single team:
|
245
270
|
|
@@ -269,7 +294,7 @@ Remove a member from a team:
|
|
269
294
|
|
270
295
|
gh.team(110234).members.remove("rauhryan")
|
271
296
|
|
272
|
-
|
297
|
+
## Users
|
273
298
|
|
274
299
|
Get a single user:
|
275
300
|
|
@@ -316,13 +341,13 @@ Get a list of orgs for a specific user:
|
|
316
341
|
|
317
342
|
> Notes: see above for all the available api methods for orgs
|
318
343
|
|
319
|
-
|
344
|
+
## Events
|
320
345
|
|
321
346
|
List public events:
|
322
347
|
|
323
348
|
gh.events
|
324
349
|
|
325
|
-
|
350
|
+
## Pagination
|
326
351
|
|
327
352
|
Ghee fully supports pagination for anything that returns a list, for
|
328
353
|
example repo issues.
|
@@ -338,7 +363,7 @@ Ghee also provides a convienence method for all the pages
|
|
338
363
|
|
339
364
|
gh.repos("rauhryan","huboard").issues.all #=> return all the pages
|
340
365
|
|
341
|
-
|
366
|
+
## Filtering parameters
|
342
367
|
|
343
368
|
Many of the api calls allow you to pass in additional paramters to
|
344
369
|
filter and sort your data, for example issues provide
|
data/Rakefile
CHANGED
data/ghee.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_runtime_dependency 'multi_json'
|
24
24
|
s.add_runtime_dependency 'yajl-ruby'
|
25
25
|
s.add_development_dependency 'rake'
|
26
|
+
s.add_development_dependency 'json'
|
26
27
|
s.add_development_dependency 'rspec', '~>2.0'
|
27
28
|
s.add_development_dependency 'webmock'
|
28
29
|
s.add_development_dependency 'vcr'
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class Ghee
|
2
|
+
module API
|
3
|
+
module Repos
|
4
|
+
module Downloads
|
5
|
+
class Proxy < ::Ghee::ResourceProxy
|
6
|
+
|
7
|
+
# Creates
|
8
|
+
#
|
9
|
+
# return json
|
10
|
+
#
|
11
|
+
def create(file_path, description="")
|
12
|
+
params = {
|
13
|
+
:name => File.basename(file_path),
|
14
|
+
:size => File.size(file_path),
|
15
|
+
:description => description
|
16
|
+
}
|
17
|
+
download = connection.post(path_prefix, params).body
|
18
|
+
s3 = Faraday.new(:url => download["s3_url"]) do |builder|
|
19
|
+
builder.request :multipart
|
20
|
+
builder.request :url_encoded
|
21
|
+
|
22
|
+
builder.adapter :net_http
|
23
|
+
end
|
24
|
+
upload = {
|
25
|
+
:key => download["path"],
|
26
|
+
:acl => download["acl"],
|
27
|
+
:success_action_status => 201,
|
28
|
+
:Filename => download["name"],
|
29
|
+
:AWSAccessKeyId => download["accesskeyid"],
|
30
|
+
:Policy => download["policy"],
|
31
|
+
:Signature => download["signature"],
|
32
|
+
:"Content-Type" => download["mime_type"],
|
33
|
+
:file => Faraday::UploadIO.new(file_path, download["mime_type"])
|
34
|
+
}
|
35
|
+
s3.post("/",upload).status == 201
|
36
|
+
return download
|
37
|
+
end
|
38
|
+
|
39
|
+
# Destroys
|
40
|
+
#
|
41
|
+
# return boolean
|
42
|
+
#
|
43
|
+
def destroy
|
44
|
+
connection.delete(path_prefix).status == 204
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Proxy < ::Ghee::ResourceProxy
|
50
|
+
def downloads(id=nil)
|
51
|
+
prefix = id ? "#{path_prefix}/downloads/#{id}" :"#{path_prefix}/downloads"
|
52
|
+
Ghee::API::Repos::Downloads::Proxy.new(connection, prefix)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,107 @@
|
|
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
|
+
# 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
|
+
# The Git module handles all of the raw git data endpoints
|
22
|
+
#
|
23
|
+
module Git
|
24
|
+
|
25
|
+
# The Blobs module handles all of the blob methods
|
26
|
+
#
|
27
|
+
module Blobs
|
28
|
+
class Proxy < ::Ghee::ResourceProxy
|
29
|
+
include Ghee::CUD
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# The Tags module handles all of the tag methods
|
34
|
+
#
|
35
|
+
module Tags
|
36
|
+
class Proxy < ::Ghee::ResourceProxy
|
37
|
+
include Ghee::CUD
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# The Commits module handles all of the commit methods
|
42
|
+
#
|
43
|
+
module Commits
|
44
|
+
class Proxy < ::Ghee::ResourceProxy
|
45
|
+
include Ghee::CUD
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# The Trees module handles all of the commit methods
|
50
|
+
#
|
51
|
+
module Trees
|
52
|
+
class Proxy < ::Ghee::ResourceProxy
|
53
|
+
include Ghee::CUD
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# The Refs module handles all of the commit methods
|
58
|
+
#
|
59
|
+
module Refs
|
60
|
+
class Proxy < ::Ghee::ResourceProxy
|
61
|
+
include Ghee::CUD
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class Proxy < ::Ghee::ResourceProxy
|
66
|
+
|
67
|
+
# Get the blob by a provided sha
|
68
|
+
#
|
69
|
+
def blobs(sha=nil, params={})
|
70
|
+
params = sha if sha.is_a?Hash
|
71
|
+
prefix = (!sha.is_a?(Hash) and sha) ? "#{path_prefix}/blobs/#{sha}" : "#{path_prefix}/blobs"
|
72
|
+
Ghee::API::Repos::Git::Blobs::Proxy.new(connection, prefix, params)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Get a commit by the sha
|
76
|
+
#
|
77
|
+
def commits(sha=nil, params={})
|
78
|
+
params = sha if sha.is_a?Hash
|
79
|
+
prefix = (!sha.is_a?(Hash) and sha) ? "#{path_prefix}/commits/#{sha}" : "#{path_prefix}/commits"
|
80
|
+
Ghee::API::Repos::Git::Commits::Proxy.new(connection, prefix, params)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Get refs for the repo
|
84
|
+
#
|
85
|
+
def refs(ref=nil)
|
86
|
+
prefix = ref ? "#{path_prefix}/refs/#{ref}" : "#{path_prefix}/refs"
|
87
|
+
Ghee::API::Repos::Git::Refs::Proxy.new(connection, prefix)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Get tree by a given sha
|
91
|
+
#
|
92
|
+
def trees(sha=nil)
|
93
|
+
prefix = sha ? "#{path_prefix}/trees/#{sha}" : "#{path_prefix}/trees"
|
94
|
+
Ghee::API::Repos::Git::Trees::Proxy.new(connection, prefix)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Get a tag by a given sha
|
98
|
+
#
|
99
|
+
def tags(sha=nil)
|
100
|
+
prefix = sha ? "#{path_prefix}/tags/#{sha}" : "#{path_prefix}/tags"
|
101
|
+
Ghee::API::Repos::Git::Tags::Proxy.new(connection, prefix)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
data/lib/ghee/api/issues.rb
CHANGED
@@ -54,6 +54,12 @@ class Ghee
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
module Events
|
58
|
+
class Proxy < ::Ghee::ResourceProxy
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
57
63
|
# Gists::Proxy inherits from Ghee::Proxy and
|
58
64
|
# enables defining methods on the proxy object
|
59
65
|
#
|
@@ -81,15 +87,26 @@ class Ghee
|
|
81
87
|
response.body
|
82
88
|
end
|
83
89
|
|
90
|
+
# Returns issue comments for an issue or all of the comments
|
91
|
+
# for a repo
|
84
92
|
def comments(id=nil)
|
85
93
|
prefix = id ? "#{path_prefix}/comments/#{id}" : "#{path_prefix}/comments"
|
86
94
|
Ghee::API::Issues::Comments::Proxy.new(connection,prefix)
|
87
95
|
end
|
88
96
|
|
97
|
+
# Returns all of the labels for repo
|
98
|
+
#
|
89
99
|
def labels
|
90
100
|
Ghee::API::Issues::Labels::Proxy.new(connection, "#{path_prefix}/labels")
|
91
101
|
end
|
92
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
|
+
|
93
110
|
end
|
94
111
|
end
|
95
112
|
end
|
data/lib/ghee/api/repos.rb
CHANGED
@@ -78,6 +78,16 @@ class Ghee
|
|
78
78
|
Ghee::API::Repos::Hooks::Proxy.new(connection, prefix, params)
|
79
79
|
end
|
80
80
|
|
81
|
+
def commits(sha=nil, params={})
|
82
|
+
params = sha if sha.is_a?Hash
|
83
|
+
prefix = (!sha.is_a?(Hash) and sha) ? "#{path_prefix}/commits/#{sha}" : "#{path_prefix}/commits"
|
84
|
+
Ghee::API::Repos::Commits::Proxy.new(connection, prefix, params)
|
85
|
+
end
|
86
|
+
|
87
|
+
def git
|
88
|
+
Ghee::API::Repos::Git::Proxy.new(connection, "#{path_prefix}/git")
|
89
|
+
end
|
90
|
+
|
81
91
|
end
|
82
92
|
|
83
93
|
# Get repos
|
data/lib/ghee/connection.rb
CHANGED
data/lib/ghee/resource_proxy.rb
CHANGED
@@ -94,15 +94,15 @@ class Ghee
|
|
94
94
|
def parse_link_header(header)
|
95
95
|
return @total = subject.size, @pagination = {} if header.nil?
|
96
96
|
require 'cgi'
|
97
|
-
pattern = /<(
|
97
|
+
pattern = /<(.*)>;\s+rel="(.*)"/
|
98
98
|
matches = {}
|
99
99
|
header.split(',').each do |m|
|
100
100
|
match = pattern.match m
|
101
|
-
uri = URI.parse(match[
|
101
|
+
uri = URI.parse(match[1])
|
102
102
|
uri_params = CGI.parse(uri.query)
|
103
103
|
page = uri_params["page"].first.to_i
|
104
104
|
per_page = uri_params["per_page"] ? uri_params["per_page"].first.to_i : 30
|
105
|
-
matches[match[
|
105
|
+
matches[match[2].to_sym] = {:link => match[1], :page => page, :per_page => per_page}
|
106
106
|
end
|
107
107
|
@pagination = matches
|
108
108
|
end
|
data/lib/ghee/version.rb
CHANGED
data/lib/ghee.rb
CHANGED
data/spec/fyeah.jpg
ADDED
Binary file
|
@@ -3,7 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe Ghee::API::Authorizations do
|
4
4
|
subject { Ghee.new(GH_AUTH) }
|
5
5
|
|
6
|
-
describe "#authorizations" do
|
6
|
+
describe "#authorizations#list" do
|
7
|
+
it "should return a list of auths" do
|
8
|
+
VCR.use_cassette "authorizations" do
|
9
|
+
auth = subject.authorizations
|
10
|
+
auth.size().should > 0
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
describe "#authorizations", :if => false do
|
7
15
|
|
8
16
|
context "with a test authorization" do
|
9
17
|
before :all do
|
@@ -22,12 +30,6 @@ describe Ghee::API::Authorizations do
|
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
25
|
-
it "should return a list of auths" do
|
26
|
-
VCR.use_cassette "authorizations" do
|
27
|
-
auth = subject.authorizations
|
28
|
-
auth.size().should > 0
|
29
|
-
end
|
30
|
-
end
|
31
33
|
|
32
34
|
it "should patch an auth" do
|
33
35
|
VCR.use_cassette "authorization(id).patch" do
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ghee::API::Repos::Downloads do
|
4
|
+
subject { Ghee.new(GH_AUTH).repos(GH_USER,GH_REPO) }
|
5
|
+
|
6
|
+
|
7
|
+
describe "#repos(login,name)#downloads" do
|
8
|
+
context "with a test download" do
|
9
|
+
before :all do
|
10
|
+
VCR.use_cassette "repos(login,name).downloads.create.test" do
|
11
|
+
@download = subject.downloads.create(File.expand_path("../../../fyeah.jpg",__FILE__),"This is a test of the downloads api")
|
12
|
+
@download.should_not be_nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
let(:test_download) {@download}
|
16
|
+
after :all do
|
17
|
+
VCR.use_cassette "repos(login,name).downloads.delete" do
|
18
|
+
subject.downloads(test_download["id"]).destroy
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return a list of downloads" do
|
23
|
+
VCR.use_cassette "repos#downloads#all" do
|
24
|
+
downloads = subject.downloads
|
25
|
+
downloads.size.should > 0
|
26
|
+
downloads.first["download_count"].should_not be_nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
it "should return a single download" do
|
30
|
+
VCR.use_cassette "repos#downloads#by_id" do
|
31
|
+
download = subject.downloads test_download["id"]
|
32
|
+
download.should_not be_nil
|
33
|
+
download["download_count"].should_not be_nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have uploaded a file" do
|
38
|
+
test_download["id"].should_not be_nil
|
39
|
+
test_download["name"].should_not be_nil
|
40
|
+
test_download["mime_type"].should_not be_nil
|
41
|
+
test_download["policy"].should_not be_nil
|
42
|
+
test_download["signature"].should_not be_nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
describe Ghee::API::Repos::Git do
|
5
|
+
subject { Ghee.new(GH_AUTH).repos(GH_USER,GH_REPO) }
|
6
|
+
|
7
|
+
def should_be_a_blob(blob)
|
8
|
+
blob["content"].should_not be_nil
|
9
|
+
blob["encoding"].should_not be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def should_be_a_commit(commit)
|
13
|
+
# assert its a commit
|
14
|
+
commit["sha"].should_not be_nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def should_be_a_tree(tree)
|
18
|
+
tree["sha"].should_not be_nil
|
19
|
+
tree["tree"].size.should > 0
|
20
|
+
end
|
21
|
+
|
22
|
+
def should_be_a_ref(ref)
|
23
|
+
ref["ref"].should_not be_nil
|
24
|
+
ref["url"].should_not be_nil
|
25
|
+
ref["object"].should_not be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def should_be_a_tag(tag)
|
29
|
+
tag["sha"].should_not be_nil
|
30
|
+
tag["tag"].should_not be_nil
|
31
|
+
tag["message"].should_not be_nil
|
32
|
+
tag["tagger"].should_not be_nil
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#repos()#commits" do
|
36
|
+
it "should return an array of commits" do
|
37
|
+
VCR.use_cassette "#repos()#commits" do
|
38
|
+
commits = subject.commits
|
39
|
+
commits.size.should > 0
|
40
|
+
should_be_a_commit commits.first
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#repos(login,name)#git" do
|
46
|
+
describe "#tags" do
|
47
|
+
context "with a test tags" do
|
48
|
+
before :all do
|
49
|
+
VCR.use_cassette "repos()#git#tags#create" do
|
50
|
+
@test_tag = subject.git.tags.create({
|
51
|
+
:tag => "test_tag_#{rand(100)}",
|
52
|
+
:object => subject.commits.first["sha"],
|
53
|
+
:type => "commit",
|
54
|
+
:message => "creating a tag with the api",
|
55
|
+
:tagger => {
|
56
|
+
:name => "Ryan Rauh",
|
57
|
+
:email => "rauh.ryan@gmail.com",
|
58
|
+
:date => Time.now.iso8601
|
59
|
+
}
|
60
|
+
|
61
|
+
});
|
62
|
+
@test_tag.should_not be_nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
let(:test_tag) {@test_tag}
|
66
|
+
|
67
|
+
it "should return a tag" do
|
68
|
+
VCR.use_cassette "repos()#git#tags#sha" do
|
69
|
+
tag = subject.git.tags(test_tag["sha"])
|
70
|
+
should_be_a_tag tag
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
describe "#blobs" do
|
76
|
+
context "with a test blob" do
|
77
|
+
before :all do
|
78
|
+
VCR.use_cassette "repos()#git#blobs#create" do
|
79
|
+
@test_blob = subject.git.blobs.create({
|
80
|
+
:content => "Oh hello!",
|
81
|
+
:encoding => "utf-8"
|
82
|
+
});
|
83
|
+
@test_blob.should_not be_nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
let(:test_blob) {@test_blob}
|
87
|
+
|
88
|
+
it "should return a blob" do
|
89
|
+
VCR.use_cassette "repos()#git#blobs#sha" do
|
90
|
+
blob = subject.git.blobs(test_blob["sha"])
|
91
|
+
should_be_a_blob blob
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
describe "#refs" do
|
97
|
+
it "should return all the refs" do
|
98
|
+
VCR.use_cassette "repos()#git#refs" do
|
99
|
+
refs = subject.git.refs
|
100
|
+
refs.size.should > 0
|
101
|
+
should_be_a_ref refs.first
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
context "with a test commit" do
|
106
|
+
before :all do
|
107
|
+
VCR.use_cassette "repos()#commits#first" do
|
108
|
+
# create a commit
|
109
|
+
@test_commit = subject.commits.first
|
110
|
+
end
|
111
|
+
end
|
112
|
+
let(:test_commit) {@test_commit}
|
113
|
+
|
114
|
+
describe "#trees" do
|
115
|
+
it "should return a tree for the commit sha" do
|
116
|
+
VCR.use_cassette "repos()#git#trees:sha" do
|
117
|
+
tree = subject.git.trees test_commit["sha"]
|
118
|
+
tree.should_not be_nil
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "#commits" do
|
124
|
+
it "should return a commit" do
|
125
|
+
VCR.use_cassette "repos()#git#commit#sha" do
|
126
|
+
commit = subject.git.commits(test_commit["sha"])
|
127
|
+
should_be_a_commit commit
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
@@ -72,6 +72,20 @@ describe Ghee::API::Issues do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
describe "#events" do
|
76
|
+
it "should return all the events for a given issue" do
|
77
|
+
VCR.use_cassette "#repo#issues(id)#events" do
|
78
|
+
events = subject.repos(GH_USER,GH_REPO).issues(test_issue["number"]).events
|
79
|
+
events.size.should > 0
|
80
|
+
end
|
81
|
+
end
|
82
|
+
it "should return all the events for the repo" do
|
83
|
+
VCR.use_cassette "#repo#issues#events" do
|
84
|
+
events = subject.repos(GH_USER,GH_REPO).issues.events
|
85
|
+
events.size.should > 0
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
75
89
|
describe "#comments" do
|
76
90
|
context "issue with comments " do
|
77
91
|
before :all do
|
@@ -4,14 +4,16 @@ describe Ghee::API::Milestones do
|
|
4
4
|
subject { Ghee.new(GH_AUTH) }
|
5
5
|
|
6
6
|
def should_be_an_milestone(milestone)
|
7
|
-
milestone["creator"]["login"].should_not be_nil
|
8
7
|
milestone["title"].should_not be_nil
|
8
|
+
milestone["number"].should_not be_nil
|
9
|
+
milestone["open_issues"].should_not be_nil
|
10
|
+
milestone["closed_issues"].should_not be_nil
|
9
11
|
end
|
10
12
|
|
11
13
|
describe "#repos(login,name)#milestones" do
|
12
14
|
it "should return repos milestones" do
|
13
15
|
VCR.use_cassette("repos(#{GH_USER},#{GH_REPO}).milestones") do
|
14
|
-
temp_milestone = subject.repos(GH_USER, GH_REPO).milestones.create({ :title => "Destroy test milestone" })
|
16
|
+
temp_milestone = subject.repos(GH_USER, GH_REPO).milestones.create({ :title => "Destroy test milestone #{rand(100)}" })
|
15
17
|
|
16
18
|
milestones = subject.repos(GH_USER, GH_REPO).milestones
|
17
19
|
milestones.size.should > 0
|
@@ -24,7 +26,7 @@ describe Ghee::API::Milestones do
|
|
24
26
|
describe "#repos(login,name)#milestones#closed" do
|
25
27
|
it "should return repos closed milestones" do
|
26
28
|
VCR.use_cassette("repos(#{GH_USER},#{GH_REPO}).milestones.closed") do
|
27
|
-
temp_milestone = subject.repos(GH_USER, GH_REPO).milestones.create({ :title => "Destroy test milestone" })
|
29
|
+
temp_milestone = subject.repos(GH_USER, GH_REPO).milestones.create({ :title => "Destroy test milestone #{rand(100)}" })
|
28
30
|
subject.repos(GH_USER, GH_REPO).milestones(temp_milestone["number"]).close
|
29
31
|
|
30
32
|
milestones = subject.repos(GH_USER, GH_REPO).milestones.closed
|
@@ -42,7 +44,7 @@ describe Ghee::API::Milestones do
|
|
42
44
|
describe "#repos(login,name)#milestones(1)" do
|
43
45
|
it "should return an milestone by id" do
|
44
46
|
VCR.use_cassette("repos(#{GH_USER},#{GH_REPO}).milestones(1)") do
|
45
|
-
temp_milestone = subject.repos(GH_USER, GH_REPO).milestones.create({ :title => "Destroy test milestone" })
|
47
|
+
temp_milestone = subject.repos(GH_USER, GH_REPO).milestones.create({ :title => "Destroy test milestone #{rand(100)}" })
|
46
48
|
|
47
49
|
milestone = subject.repos(GH_USER, GH_REPO).milestones(1)
|
48
50
|
should_be_an_milestone(milestone)
|
@@ -56,7 +58,7 @@ describe Ghee::API::Milestones do
|
|
56
58
|
VCR.use_cassette "milestones(id).destroy" do
|
57
59
|
repo = subject.repos(GH_USER, GH_REPO)
|
58
60
|
test_milestone = repo.milestones.create({
|
59
|
-
:title => "Destroy test milestone"
|
61
|
+
:title => "Destroy test milestone #{rand(100)}"
|
60
62
|
})
|
61
63
|
should_be_an_milestone(test_milestone)
|
62
64
|
subject.repos(GH_USER, GH_REPO).milestones(test_milestone["number"]).destroy.should be_true
|
@@ -100,4 +102,4 @@ describe Ghee::API::Milestones do
|
|
100
102
|
end
|
101
103
|
end
|
102
104
|
end
|
103
|
-
end
|
105
|
+
end
|
data/spec/ghee/api/repos_spec.rb
CHANGED
@@ -22,7 +22,6 @@ describe Ghee::API::Repos do
|
|
22
22
|
it "should return issues for repo" do
|
23
23
|
VCR.use_cassette("repo(#{GH_USER},#{GH_REPO}).issues") do
|
24
24
|
issues = subject.repos(GH_USER, GH_REPO).issues
|
25
|
-
puts issues.sort_by! { |r| r["title"]}.reverse
|
26
25
|
issues.is_a?(Array).should be_true
|
27
26
|
issues.size.should > 0
|
28
27
|
issues.first["title"].should_not be_nil
|
@@ -31,54 +30,53 @@ describe Ghee::API::Repos do
|
|
31
30
|
end
|
32
31
|
|
33
32
|
describe "#labels" do
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
context "" do
|
34
|
+
before :all do
|
35
|
+
VCR.use_cassette "#labels#create" do
|
36
|
+
@temp_label = subject.repos(GH_USER, GH_REPO).labels.create({:color => "efefef", :name => "#{(0...8).map{ ('a'..'z').to_a[rand(26)] }.join}"})
|
37
|
+
end
|
38
|
+
end
|
39
|
+
let(:test_label) {@temp_label}
|
40
|
+
after :all do
|
41
|
+
VCR.use_cassette "#labels#destroy" do
|
42
|
+
subject.repos(GH_USER, GH_REPO).labels(test_label['name']).destroy
|
43
|
+
end
|
44
|
+
end
|
45
|
+
it "should return all the labels" do
|
46
|
+
VCR.use_cassette("repo(#{GH_USER},#{GH_REPO}).labels") do
|
37
47
|
|
38
|
-
|
39
|
-
|
40
|
-
|
48
|
+
labels = subject.repos(GH_USER, GH_REPO).labels
|
49
|
+
labels.size.should > 0
|
50
|
+
labels.first["color"].should_not be_nil
|
41
51
|
|
42
|
-
|
52
|
+
end
|
43
53
|
end
|
44
|
-
end
|
45
54
|
|
46
|
-
|
47
|
-
|
48
|
-
temp_label = subject.repos(GH_USER, GH_REPO).labels.create(:color => "efefef", :name => "temp label")
|
55
|
+
it "should get a single label" do
|
56
|
+
VCR.use_cassette("repo(#{GH_USER},#{GH_REPO}).labels(id)") do
|
49
57
|
|
50
|
-
|
51
|
-
|
52
|
-
|
58
|
+
label = subject.repos(GH_USER,GH_REPO).labels(test_label["name"])
|
59
|
+
label["color"].should == 'efefef'
|
60
|
+
label["name"].should == test_label["name"]
|
53
61
|
|
54
|
-
|
62
|
+
end
|
55
63
|
end
|
56
|
-
end
|
57
64
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
65
|
+
it "should patch a label" do
|
66
|
+
VCR.use_cassette("repo(#{GH_USER},#{GH_REPO}).labels.patched") do
|
67
|
+
name = "patch label #{rand(100)}"
|
68
|
+
label = subject.repos(GH_USER, GH_REPO).labels.create(:color => "efefef", :name => name)
|
69
|
+
label["color"].should == "efefef"
|
70
|
+
label["url"].should include "labels/patch"
|
64
71
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
patched["name"].should == "patched label"
|
72
|
+
patched = subject.repos(GH_USER, GH_REPO).labels(label["name"]).patch(:color => "000000", :name => "patched label")
|
73
|
+
patched["color"].should == "000000"
|
74
|
+
patched["url"].should include "labels/patched"
|
69
75
|
|
70
|
-
|
76
|
+
subject.repos(GH_USER, GH_REPO).labels(patched["name"]).destroy.should be_true
|
77
|
+
end
|
71
78
|
end
|
72
|
-
end
|
73
79
|
|
74
|
-
it "should create a label" do
|
75
|
-
VCR.use_cassette("repo(#{GH_USER},#{GH_REPO}).labels.create") do
|
76
|
-
label = subject.repos(GH_USER, GH_REPO).labels.create(:color => "efefef", :name => "created label")
|
77
|
-
label["color"].should == "efefef"
|
78
|
-
label["url"].should include "labels/created"
|
79
|
-
label["name"].should == "created label"
|
80
|
-
subject.repos(GH_USER, GH_REPO).labels(label["name"]).destroy.should be_true
|
81
|
-
end
|
82
80
|
end
|
83
81
|
end
|
84
82
|
end
|
data/spec/ghee/api/teams_spec.rb
CHANGED
@@ -14,7 +14,7 @@ describe Ghee::API::Orgs::Teams do
|
|
14
14
|
before :all do
|
15
15
|
VCR.use_cassette "orgs.teams.create.test" do
|
16
16
|
@test_team = subject.orgs(GH_ORG).teams.create({
|
17
|
-
:name => "
|
17
|
+
:name => "#{(0...8).map{ ('a'..'z').to_a[rand(26)] }.join}"
|
18
18
|
})
|
19
19
|
@test_team.should_not be_nil
|
20
20
|
end
|
@@ -25,7 +25,7 @@ describe Ghee::API::Orgs::Teams do
|
|
25
25
|
before :all do
|
26
26
|
VCR.use_cassette "orgs.teams.create.test_member" do
|
27
27
|
@member_team = subject.orgs(GH_ORG).teams.create({
|
28
|
-
:name => "
|
28
|
+
:name => "#{(0...8).map{ ('a'..'z').to_a[rand(26)] }.join}"
|
29
29
|
})
|
30
30
|
@member_team.should_not be_nil
|
31
31
|
end
|
@@ -69,11 +69,11 @@ describe Ghee::API::Orgs::Teams do
|
|
69
69
|
|
70
70
|
it "should patch the team" do
|
71
71
|
VCR.use_cassette "orgs.teams.patch" do
|
72
|
+
name = "#{(0...8).map{ ('a'..'z').to_a[rand(26)] }.join}"
|
72
73
|
team = subject.orgs(GH_ORG).teams(test_team['id']).patch({
|
73
|
-
|
74
|
+
:name => name
|
74
75
|
})
|
75
76
|
should_be_a_team team
|
76
|
-
team["name"].should == "herpderp"
|
77
77
|
end
|
78
78
|
|
79
79
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,7 +10,11 @@ VCR.config do |c|
|
|
10
10
|
c.stub_with :webmock
|
11
11
|
c.default_cassette_options = {:record => :once}
|
12
12
|
end
|
13
|
-
|
14
|
-
settings = YAML.load_file(File.expand_path('../settings.yml', __FILE__))
|
15
|
-
GH_AUTH = settings['access_token'] ? {:access_token => settings['access_token']} : {:basic_auth => {:user_name => settings['username'], :password => settings['password']}}
|
16
|
-
GH_USER, GH_REPO, GH_ORG = settings['username'], settings['repo'], settings['org']
|
13
|
+
if File.exists? File.expand_path("../settings.yml", __FILE__)
|
14
|
+
settings = YAML.load_file(File.expand_path('../settings.yml', __FILE__))
|
15
|
+
GH_AUTH = settings['access_token'] ? {:access_token => settings['access_token']} : {:basic_auth => {:user_name => settings['username'], :password => settings['password']}}
|
16
|
+
GH_USER, GH_REPO, GH_ORG = settings['username'], settings['repo'], settings['org']
|
17
|
+
else
|
18
|
+
GH_AUTH = {:access_token => ENV["TOKEN"]}
|
19
|
+
GH_USER, GH_REPO, GH_ORG = ENV['GH_USER'], ENV['GH_REPO'], ENV['GH_ORG']
|
20
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-04-
|
13
|
+
date: 2012-04-08 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
17
|
-
requirement: &
|
17
|
+
requirement: &70200201095860 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70200201095860
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: faraday_middleware
|
28
|
-
requirement: &
|
28
|
+
requirement: &70200201095200 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70200201095200
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: multi_json
|
39
|
-
requirement: &
|
39
|
+
requirement: &70200201094540 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70200201094540
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: yajl-ruby
|
50
|
-
requirement: &
|
50
|
+
requirement: &70200201094040 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70200201094040
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rake
|
61
|
-
requirement: &
|
61
|
+
requirement: &70200201093440 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,21 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70200201093440
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: json
|
72
|
+
requirement: &70200201092740 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *70200201092740
|
70
81
|
- !ruby/object:Gem::Dependency
|
71
82
|
name: rspec
|
72
|
-
requirement: &
|
83
|
+
requirement: &70200201076300 !ruby/object:Gem::Requirement
|
73
84
|
none: false
|
74
85
|
requirements:
|
75
86
|
- - ~>
|
@@ -77,10 +88,10 @@ dependencies:
|
|
77
88
|
version: '2.0'
|
78
89
|
type: :development
|
79
90
|
prerelease: false
|
80
|
-
version_requirements: *
|
91
|
+
version_requirements: *70200201076300
|
81
92
|
- !ruby/object:Gem::Dependency
|
82
93
|
name: webmock
|
83
|
-
requirement: &
|
94
|
+
requirement: &70200201075480 !ruby/object:Gem::Requirement
|
84
95
|
none: false
|
85
96
|
requirements:
|
86
97
|
- - ! '>='
|
@@ -88,10 +99,10 @@ dependencies:
|
|
88
99
|
version: '0'
|
89
100
|
type: :development
|
90
101
|
prerelease: false
|
91
|
-
version_requirements: *
|
102
|
+
version_requirements: *70200201075480
|
92
103
|
- !ruby/object:Gem::Dependency
|
93
104
|
name: vcr
|
94
|
-
requirement: &
|
105
|
+
requirement: &70200201074620 !ruby/object:Gem::Requirement
|
95
106
|
none: false
|
96
107
|
requirements:
|
97
108
|
- - ! '>='
|
@@ -99,10 +110,10 @@ dependencies:
|
|
99
110
|
version: '0'
|
100
111
|
type: :development
|
101
112
|
prerelease: false
|
102
|
-
version_requirements: *
|
113
|
+
version_requirements: *70200201074620
|
103
114
|
- !ruby/object:Gem::Dependency
|
104
115
|
name: ZenTest
|
105
|
-
requirement: &
|
116
|
+
requirement: &70200201073820 !ruby/object:Gem::Requirement
|
106
117
|
none: false
|
107
118
|
requirements:
|
108
119
|
- - ! '>='
|
@@ -110,10 +121,10 @@ dependencies:
|
|
110
121
|
version: '0'
|
111
122
|
type: :development
|
112
123
|
prerelease: false
|
113
|
-
version_requirements: *
|
124
|
+
version_requirements: *70200201073820
|
114
125
|
- !ruby/object:Gem::Dependency
|
115
126
|
name: autotest-growl
|
116
|
-
requirement: &
|
127
|
+
requirement: &70200201073000 !ruby/object:Gem::Requirement
|
117
128
|
none: false
|
118
129
|
requirements:
|
119
130
|
- - ! '>='
|
@@ -121,7 +132,7 @@ dependencies:
|
|
121
132
|
version: '0'
|
122
133
|
type: :development
|
123
134
|
prerelease: false
|
124
|
-
version_requirements: *
|
135
|
+
version_requirements: *70200201073000
|
125
136
|
description: A complete, simple, and intuitive ruby API for all things Github.
|
126
137
|
email:
|
127
138
|
- rauh.ryan@gmail.com
|
@@ -131,7 +142,7 @@ extra_rdoc_files: []
|
|
131
142
|
files:
|
132
143
|
- .autotest
|
133
144
|
- .gitignore
|
134
|
-
- .
|
145
|
+
- .travis.yml
|
135
146
|
- Gemfile
|
136
147
|
- LICENSE
|
137
148
|
- README.md
|
@@ -139,8 +150,10 @@ files:
|
|
139
150
|
- ghee.gemspec
|
140
151
|
- lib/ghee.rb
|
141
152
|
- lib/ghee/api/authorizations.rb
|
153
|
+
- lib/ghee/api/downloads.rb
|
142
154
|
- lib/ghee/api/events.rb
|
143
155
|
- lib/ghee/api/gists.rb
|
156
|
+
- lib/ghee/api/git_data.rb
|
144
157
|
- lib/ghee/api/issues.rb
|
145
158
|
- lib/ghee/api/milestones.rb
|
146
159
|
- lib/ghee/api/orgs.rb
|
@@ -150,9 +163,12 @@ files:
|
|
150
163
|
- lib/ghee/resource_proxy.rb
|
151
164
|
- lib/ghee/state_methods.rb
|
152
165
|
- lib/ghee/version.rb
|
166
|
+
- spec/fyeah.jpg
|
153
167
|
- spec/ghee/api/authorizations_spec.rb
|
168
|
+
- spec/ghee/api/downloads_spec.rb
|
154
169
|
- spec/ghee/api/events_spec.rb
|
155
170
|
- spec/ghee/api/gists_spec.rb
|
171
|
+
- spec/ghee/api/gitdata_spec.rb
|
156
172
|
- spec/ghee/api/hooks_spec.rb
|
157
173
|
- spec/ghee/api/issues_spec.rb
|
158
174
|
- spec/ghee/api/milestones_spec.rb
|
@@ -191,9 +207,12 @@ signing_key:
|
|
191
207
|
specification_version: 3
|
192
208
|
summary: Access Github in ruby.
|
193
209
|
test_files:
|
210
|
+
- spec/fyeah.jpg
|
194
211
|
- spec/ghee/api/authorizations_spec.rb
|
212
|
+
- spec/ghee/api/downloads_spec.rb
|
195
213
|
- spec/ghee/api/events_spec.rb
|
196
214
|
- spec/ghee/api/gists_spec.rb
|
215
|
+
- spec/ghee/api/gitdata_spec.rb
|
197
216
|
- spec/ghee/api/hooks_spec.rb
|
198
217
|
- spec/ghee/api/issues_spec.rb
|
199
218
|
- spec/ghee/api/milestones_spec.rb
|
data/.rspec
DELETED
File without changes
|