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
data/README.md
CHANGED
@@ -20,6 +20,8 @@ Create an OAuth access token:
|
|
20
20
|
|
21
21
|
## Gists
|
22
22
|
|
23
|
+
### Usage
|
24
|
+
|
23
25
|
List a user's gists:
|
24
26
|
|
25
27
|
gh.user('jonmagic').gists
|
@@ -85,6 +87,119 @@ Get a single repo:
|
|
85
87
|
|
86
88
|
gh.repos("rauhryan", "ghee")
|
87
89
|
|
90
|
+
### Commits
|
91
|
+
|
92
|
+
List commits on a repo:
|
93
|
+
|
94
|
+
gh.repos("rauhryan", "ghee").commits
|
95
|
+
|
96
|
+
gh.repos("rauhryan", "ghee").commits({
|
97
|
+
:sha => "awesome_branch" # optional
|
98
|
+
})
|
99
|
+
|
100
|
+
gh.repos("rauhryan", "ghee").commits( {
|
101
|
+
:path => "/path/to/file" # only commits containing this path
|
102
|
+
})
|
103
|
+
|
104
|
+
Get a single commit:
|
105
|
+
|
106
|
+
gh.repos("rauhryan", "ghee").commits("sha")
|
107
|
+
|
108
|
+
List commit comments for a repo:
|
109
|
+
|
110
|
+
gh.repos("rauhryan", "ghee").comments
|
111
|
+
|
112
|
+
List comments for a single commit:
|
113
|
+
|
114
|
+
gh.repos("rauhryan", "ghee").commits("sha").comments
|
115
|
+
|
116
|
+
Create a commit comment:
|
117
|
+
|
118
|
+
gh.repos("rauhryan", "ghee").commits("sha").comments.create({
|
119
|
+
:body => "sweet codez yo!", #required
|
120
|
+
:commit_id => "sha", #required
|
121
|
+
:line => 123, #required
|
122
|
+
:path => "/path/to/file", #required
|
123
|
+
:position => 4 #required
|
124
|
+
})
|
125
|
+
|
126
|
+
Get a single commit comment:
|
127
|
+
|
128
|
+
gh.repos("rauhryan", "ghee").comments(123)
|
129
|
+
|
130
|
+
Update a commit comment:
|
131
|
+
|
132
|
+
gh.repos("rauhryan", "ghee").comments(123).patch(:body => "new text")
|
133
|
+
|
134
|
+
Destroy a commit comment:
|
135
|
+
|
136
|
+
gh.repos("rauhryan", "ghee").comments(123).destroy
|
137
|
+
|
138
|
+
Compare two commits:
|
139
|
+
|
140
|
+
gh.repos("rauhryan", "ghee").compare("basesha","headsha")
|
141
|
+
|
142
|
+
### Collaborators
|
143
|
+
|
144
|
+
List a repos collaborators:
|
145
|
+
|
146
|
+
gh.repos("rauhryan", "ghee").collaborators
|
147
|
+
|
148
|
+
Get a single collaborator:
|
149
|
+
|
150
|
+
gh.repos("rauhryan", "ghee").collaborators("herp") # => false
|
151
|
+
|
152
|
+
gh.repos("rauhryan", "ghee").collaborators("jonmagic") # => true
|
153
|
+
|
154
|
+
Add a collaborator:
|
155
|
+
|
156
|
+
gh.repos("rauhryan", "ghee").collaborators.add("herp") # => true
|
157
|
+
|
158
|
+
Remove a collaborator:
|
159
|
+
|
160
|
+
gh.repos("rauhryan", "ghee").collaborators.remove("herp") # => true
|
161
|
+
|
162
|
+
### Forks
|
163
|
+
|
164
|
+
List the hooks for a repo:
|
165
|
+
|
166
|
+
gh.repos("rauhryan", "ghee").forks
|
167
|
+
|
168
|
+
gh.repos("rauhryan", "ghee").forks(:sort => "newest") # => `newest`, `oldest`, `watchers`
|
169
|
+
|
170
|
+
Create a fork:
|
171
|
+
|
172
|
+
gh.repos("rauhryan", "ghee").forks.create # => forks the repo to the authenticated user
|
173
|
+
|
174
|
+
### Keys
|
175
|
+
|
176
|
+
List the keys for a repo:
|
177
|
+
|
178
|
+
gh.repos("rauhryan", "ghee").keys
|
179
|
+
|
180
|
+
Get a single key for a repo:
|
181
|
+
|
182
|
+
gh.repos("rauhryan", "ghee").keys(123)
|
183
|
+
|
184
|
+
Create a key for a repo:
|
185
|
+
|
186
|
+
gh.repos("rauhryan", "ghee").keys.create({
|
187
|
+
:title => "customer deploy key",
|
188
|
+
:key => "ssh-rsa AAA ..."
|
189
|
+
})
|
190
|
+
|
191
|
+
Update a key for a repo:
|
192
|
+
|
193
|
+
gh.repos("rauhryan", "ghee").keys.patch({
|
194
|
+
:title => "customer deploy key",
|
195
|
+
:key => "ssh-rsa AAA ..."
|
196
|
+
})
|
197
|
+
|
198
|
+
Destroy a key for a repo:
|
199
|
+
|
200
|
+
gh.repos("rauhryan", "ghee").keys(123).destroy # => true
|
201
|
+
|
202
|
+
|
88
203
|
### Hooks
|
89
204
|
|
90
205
|
Get the hooks for a repo:
|
@@ -129,7 +244,31 @@ Create a download for a repo:
|
|
129
244
|
|
130
245
|
Destroy a download for a repo:
|
131
246
|
|
132
|
-
gh.repos("rauhryan", "ghee").downloads.destroy
|
247
|
+
gh.repos("rauhryan", "ghee").downloads(12).destroy
|
248
|
+
|
249
|
+
### Watchers
|
250
|
+
|
251
|
+
List watchers for a repo:
|
252
|
+
|
253
|
+
gh.repos("rauhryan", "ghee").watchers
|
254
|
+
|
255
|
+
List repos being watched:
|
256
|
+
|
257
|
+
gh.user.watched
|
258
|
+
|
259
|
+
gh.users("jonmagic").watched
|
260
|
+
|
261
|
+
Check if you are watching a repo:
|
262
|
+
|
263
|
+
gh.user.watching? "rauhryan", "huboard"
|
264
|
+
|
265
|
+
Watch a repo:
|
266
|
+
|
267
|
+
gh.user.watch "rauhryan", "huboard"
|
268
|
+
|
269
|
+
Unwatch a repo:
|
270
|
+
|
271
|
+
gh.user.watch! "rauhryan", "huboard"
|
133
272
|
|
134
273
|
### Milestones
|
135
274
|
|
@@ -214,6 +353,8 @@ Destroy a comment for an issue
|
|
214
353
|
|
215
354
|
## Orgs
|
216
355
|
|
356
|
+
### Usage
|
357
|
+
|
217
358
|
Get a list of orgs for the current user:
|
218
359
|
|
219
360
|
gh.orgs
|
@@ -226,12 +367,16 @@ Patch an organization:([see docs for all possible params](http://developer.githu
|
|
226
367
|
|
227
368
|
gh.orgs("huboard").patch({ :company => "awesome company" })
|
228
369
|
|
370
|
+
### Repos
|
371
|
+
|
229
372
|
Get a list of repos for an org:
|
230
373
|
|
231
374
|
gh.orgs("huboard").repos
|
232
375
|
|
233
376
|
> Notes: see above for all the available api methods for repos
|
234
377
|
|
378
|
+
### Teams
|
379
|
+
|
235
380
|
Get a list of teams for an org:
|
236
381
|
|
237
382
|
gh.orgs("huboard").teams
|
@@ -252,6 +397,8 @@ Delete a team for an org:
|
|
252
397
|
|
253
398
|
gh.orgs("huboard").teams(110234).delete
|
254
399
|
|
400
|
+
### Members
|
401
|
+
|
255
402
|
Get a list of members for a team:
|
256
403
|
|
257
404
|
gh.orgs("huboard").teams(110234).members
|
@@ -266,6 +413,8 @@ Remove a member from a team:
|
|
266
413
|
|
267
414
|
## Teams
|
268
415
|
|
416
|
+
### Usage
|
417
|
+
|
269
418
|
Get a single team:
|
270
419
|
|
271
420
|
gh.team(110234)
|
@@ -282,6 +431,8 @@ Delete a team:
|
|
282
431
|
|
283
432
|
gh.team(110234).delete
|
284
433
|
|
434
|
+
### Members
|
435
|
+
|
285
436
|
Get a list of members for a team:
|
286
437
|
|
287
438
|
gh.team(110234).members
|
@@ -296,6 +447,8 @@ Remove a member from a team:
|
|
296
447
|
|
297
448
|
## Users
|
298
449
|
|
450
|
+
### Usage
|
451
|
+
|
299
452
|
Get a single user:
|
300
453
|
|
301
454
|
gh.users('jonmagic')
|
@@ -313,6 +466,36 @@ Update authenticated user ([see docs for all possible params](http://developer.g
|
|
313
466
|
# …etc
|
314
467
|
})
|
315
468
|
|
469
|
+
### Keys
|
470
|
+
|
471
|
+
List the keys for a user:
|
472
|
+
|
473
|
+
gh.user.keys
|
474
|
+
|
475
|
+
Get a single key for a user:
|
476
|
+
|
477
|
+
gh.user.keys(123)
|
478
|
+
|
479
|
+
Create a key for a user:
|
480
|
+
|
481
|
+
gh.user.keys.create({
|
482
|
+
:title => "customer deploy key",
|
483
|
+
:key => "ssh-rsa AAA ..."
|
484
|
+
})
|
485
|
+
|
486
|
+
Update a key for a user:
|
487
|
+
|
488
|
+
gh.user.keys.patch({
|
489
|
+
:title => "customer deploy key",
|
490
|
+
:key => "ssh-rsa AAA ..."
|
491
|
+
})
|
492
|
+
|
493
|
+
Destroy a key for a user:
|
494
|
+
|
495
|
+
gh.user.keys(123).destroy # => true
|
496
|
+
|
497
|
+
### Repos
|
498
|
+
|
316
499
|
Get a list of repos for the current user:
|
317
500
|
|
318
501
|
gh.user.repos
|
@@ -341,14 +524,152 @@ Get a list of orgs for a specific user:
|
|
341
524
|
|
342
525
|
> Notes: see above for all the available api methods for orgs
|
343
526
|
|
527
|
+
### Followers
|
528
|
+
|
529
|
+
Get the followers for a user:
|
530
|
+
|
531
|
+
gh.user.followers
|
532
|
+
|
533
|
+
gh.users("rauhryan").followers
|
534
|
+
|
535
|
+
Get users following another user:
|
536
|
+
|
537
|
+
gh.users("rauhryan").following
|
538
|
+
|
539
|
+
gh.user.following
|
540
|
+
|
541
|
+
Check if you are following a user:
|
542
|
+
|
543
|
+
gh.user.following? "rauhryan"
|
544
|
+
|
545
|
+
Follow a user:
|
546
|
+
|
547
|
+
gh.user.follow "rauhryan"
|
548
|
+
|
549
|
+
Unfollow a user:
|
550
|
+
|
551
|
+
gh.user.follow! "rauhryan"
|
552
|
+
|
553
|
+
## Git Data
|
554
|
+
|
555
|
+
### Blobs
|
556
|
+
|
557
|
+
Get a blob:
|
558
|
+
|
559
|
+
gh.repos("rauhryan","huboard").git.blobs("sha")
|
560
|
+
|
561
|
+
Create a blob:
|
562
|
+
|
563
|
+
gh.repos("rauhryan","huboard").git.blobs.create({
|
564
|
+
:content => "Contents of blob",
|
565
|
+
:encoding => "utf-8"
|
566
|
+
})
|
567
|
+
|
568
|
+
|
569
|
+
### Commit
|
570
|
+
|
571
|
+
Get a commit:
|
572
|
+
|
573
|
+
gh.repos("rauhryan","huboard").git.commits("sha")
|
574
|
+
|
575
|
+
Create a commit:
|
576
|
+
|
577
|
+
gh.repos("rauhryan","huboard").git.commits.create({
|
578
|
+
:message => "message of commit",
|
579
|
+
:tree => "sha",
|
580
|
+
:parents => ["sha","sha"]
|
581
|
+
})
|
582
|
+
|
583
|
+
### References
|
584
|
+
|
585
|
+
Get a reference:
|
586
|
+
|
587
|
+
gh.repos("rauhryan","huboard").git.refs("heads/master")
|
588
|
+
|
589
|
+
Get all references:
|
590
|
+
|
591
|
+
gh.repos("rauhryan","huboard").git.refs
|
592
|
+
|
593
|
+
gh.repos("rauhryan","huboard").git.refs("tags")
|
594
|
+
|
595
|
+
gh.repos("rauhryan","huboard").git.refs("heads")
|
596
|
+
|
597
|
+
Create a reference:
|
598
|
+
|
599
|
+
gh.repos("rauhryan","huboard").git.refs.create({
|
600
|
+
:ref => "refs/heads/master",
|
601
|
+
:sha => "287efc2351325e215j235f25215el1"
|
602
|
+
})
|
603
|
+
|
604
|
+
Update a reference:
|
605
|
+
|
606
|
+
gh.repos("rauhryan","huboard").git.refs("heads/master").patch({
|
607
|
+
:sha => "287efc2351325e215j235f25215el1",
|
608
|
+
:force => true
|
609
|
+
})
|
610
|
+
|
611
|
+
Delete a reference:
|
612
|
+
|
613
|
+
gh.repos("rauhryan","huboard").git.refs("tags/v1.0").destroy
|
614
|
+
|
615
|
+
### Tags
|
616
|
+
|
617
|
+
Get a tag:
|
618
|
+
|
619
|
+
gh.repos("rauhryan","huboard").git.tags("sha")
|
620
|
+
|
621
|
+
Create a tag:
|
622
|
+
|
623
|
+
gh.repos("rauhryan","huboard").git.tags.create({
|
624
|
+
:tag => "v1.0",
|
625
|
+
:message => "tag message",
|
626
|
+
:object => "sha", #sha of the object you are tagging, usually a commit
|
627
|
+
:type => "commit", #the type of object you are tagging
|
628
|
+
:tagger => {
|
629
|
+
:name => "Ryan Rauh",
|
630
|
+
:email => "rauh.ryan@gmail.com",
|
631
|
+
:date => "2011-06-17T14:53:35-07:00"
|
632
|
+
}
|
633
|
+
})
|
634
|
+
|
635
|
+
### Trees
|
636
|
+
|
637
|
+
Get a tree:
|
638
|
+
|
639
|
+
gh.repos("rauhryan","huboard").git.trees("sha")
|
640
|
+
|
641
|
+
Get a tree recursively:
|
642
|
+
|
643
|
+
gh.repos("rauhryan","huboard").git.trees("sha",{:recursive => 1})
|
644
|
+
|
645
|
+
Create a tree:
|
646
|
+
|
647
|
+
gh.repos("rauhryan","huboard").git.trees.create({
|
648
|
+
:base_tree => "sha", #optional
|
649
|
+
:tree => [
|
650
|
+
{
|
651
|
+
:path => "/path/to/thing",
|
652
|
+
:mode => 100644,
|
653
|
+
:type => "blob",
|
654
|
+
:sha => "sha"
|
655
|
+
# :content => "" # can use this instead of sha
|
656
|
+
}
|
657
|
+
]
|
658
|
+
})
|
659
|
+
|
660
|
+
|
344
661
|
## Events
|
345
662
|
|
663
|
+
### Usage
|
664
|
+
|
346
665
|
List public events:
|
347
666
|
|
348
667
|
gh.events
|
349
668
|
|
350
669
|
## Pagination
|
351
670
|
|
671
|
+
### Usage
|
672
|
+
|
352
673
|
Ghee fully supports pagination for anything that returns a list, for
|
353
674
|
example repo issues.
|
354
675
|
|
@@ -365,6 +686,8 @@ Ghee also provides a convienence method for all the pages
|
|
365
686
|
|
366
687
|
## Filtering parameters
|
367
688
|
|
689
|
+
### Usage
|
690
|
+
|
368
691
|
Many of the api calls allow you to pass in additional paramters to
|
369
692
|
filter and sort your data, for example issues provide
|
370
693
|
|
data/lib/ghee.rb
CHANGED
@@ -13,6 +13,15 @@ require 'ghee/api/milestones'
|
|
13
13
|
require 'ghee/api/orgs'
|
14
14
|
require 'ghee/api/git_data'
|
15
15
|
require 'ghee/api/downloads'
|
16
|
+
require 'ghee/api/labels'
|
17
|
+
require 'ghee/api/hooks'
|
18
|
+
require 'ghee/api/collaborators'
|
19
|
+
require 'ghee/api/forks'
|
20
|
+
require 'ghee/api/commits'
|
21
|
+
require 'ghee/api/keys'
|
22
|
+
require 'ghee/api/watchers'
|
23
|
+
require 'ghee/api/emails'
|
24
|
+
require 'ghee/api/followers'
|
16
25
|
|
17
26
|
class Ghee
|
18
27
|
attr_reader :connection
|
@@ -22,8 +31,6 @@ class Ghee
|
|
22
31
|
include Ghee::API::Users
|
23
32
|
include Ghee::API::Events
|
24
33
|
include Ghee::API::Repos
|
25
|
-
include Ghee::API::Issues
|
26
|
-
include Ghee::API::Milestones
|
27
34
|
include Ghee::API::Orgs
|
28
35
|
|
29
36
|
# Instantiates Ghee, accepts an access_token
|
@@ -0,0 +1,37 @@
|
|
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 Collaborators
|
14
|
+
class Proxy < ::Ghee::ResourceProxy
|
15
|
+
def add(member)
|
16
|
+
connection.put("#{path_prefix}/#{member}").status == 204
|
17
|
+
end
|
18
|
+
|
19
|
+
def remove(member)
|
20
|
+
connection.delete("#{path_prefix}/#{member}").status == 204
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Gists::Proxy inherits from Ghee::Proxy and
|
26
|
+
# enables defining methods on the proxy object
|
27
|
+
#
|
28
|
+
class Proxy < ::Ghee::ResourceProxy
|
29
|
+
def collaborators(user=nil)
|
30
|
+
prefix = user ? "#{path_prefix}/collaborators/#{user}" : "#{path_prefix}/collaborators"
|
31
|
+
return user ? connection.get(prefix).status == 204 : Ghee::API::Repos::Collaborators::Proxy.new(connection, prefix)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|