octokit 1.24.0 → 1.25.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/CONTRIBUTING.md +2 -2
- data/README.md +25 -57
- data/lib/octokit/client.rb +2 -0
- data/lib/octokit/client/authorizations.rb +1 -1
- data/lib/octokit/client/contents.rb +103 -0
- data/lib/octokit/client/issues.rb +1 -0
- data/lib/octokit/client/markdown.rb +1 -1
- data/lib/octokit/client/pub_sub_hubbub/service_hooks.rb +1 -1
- data/lib/octokit/client/pulls.rb +1 -1
- data/lib/octokit/client/repositories.rb +19 -1
- data/lib/octokit/client/stats.rb +81 -0
- data/lib/octokit/client/users.rb +4 -1
- data/lib/octokit/request.rb +1 -0
- data/lib/octokit/version.rb +1 -1
- data/octokit.gemspec +2 -2
- data/spec/fixtures/code_frequency_stats.json +897 -0
- data/spec/fixtures/commit_activity_stats.json +678 -0
- data/spec/fixtures/contributor_stats.json +2196 -0
- data/spec/fixtures/create_content.json +44 -0
- data/spec/fixtures/delete_content.json +30 -0
- data/spec/fixtures/new_file.txt +1 -0
- data/spec/fixtures/participation_stats.json +110 -0
- data/spec/fixtures/punch_card_stats.json +842 -0
- data/spec/fixtures/update_content.json +44 -0
- data/spec/fixtures/updated_file.txt +1 -0
- data/spec/octokit/client/contents_spec.rb +105 -0
- data/spec/octokit/client/repositories_spec.rb +19 -0
- data/spec/octokit/client/stats_spec.rb +55 -0
- data/spec/octokit/client/users_spec.rb +12 -0
- metadata +27 -4
data/CONTRIBUTING.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
1. [Fork the repository.][fork]
|
3
3
|
2. [Create a topic branch.][branch]
|
4
4
|
3. Add specs for your unimplemented feature or bug fix.
|
5
|
-
4. Run `bundle exec
|
5
|
+
4. Run `bundle exec rspec-queue spec`. If your specs pass, return to step 3.
|
6
6
|
5. Implement your feature or bug fix.
|
7
|
-
6. Run `bundle exec
|
7
|
+
6. Run `bundle exec rspec-queue spec`. If your specs fail, return to step 5.
|
8
8
|
7. Run `open coverage/index.html`. If your changes are not completely covered
|
9
9
|
by your tests, return to step 3.
|
10
10
|
8. Add documentation for your feature or bug fix.
|
data/README.md
CHANGED
@@ -1,67 +1,52 @@
|
|
1
1
|
# Octokit
|
2
2
|
|
3
|
-
|
4
|
-
[][travis]
|
5
|
-
[][gemnasium]
|
6
|
-
[][codeclimate]
|
7
|
-
[][coveralls]
|
8
|
-
|
9
|
-
[gem]: https://rubygems.org/gems/octokit
|
10
|
-
[travis]: http://travis-ci.org/pengwynn/octokit
|
11
|
-
[gemnasium]: https://gemnasium.com/pengwynn/octokit
|
12
|
-
[codeclimate]: https://codeclimate.com/github/pengwynn/octokit
|
13
|
-
[coveralls]: https://coveralls.io/r/pengwynn/octokit
|
14
|
-
|
15
|
-
Simple Ruby wrapper for the GitHub v3 API.
|
3
|
+
Simple Ruby wrapper for the GitHub API.
|
16
4
|
|
17
5
|
## Installation
|
6
|
+
|
18
7
|
gem install octokit
|
19
8
|
|
20
9
|
## Documentation
|
10
|
+
|
21
11
|
[http://rdoc.info/gems/octokit][documentation]
|
22
12
|
|
23
13
|
[documentation]: http://rdoc.info/gems/octokit
|
24
14
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
Octokit.user("sferik")
|
29
|
-
=> <#Hashie::Rash blog="http://twitter.com/sferik" company="Code for America" created_at="2008/05/14 13:36:12 -0700" email="sferik@gmail.com" followers_count=177 following_count=83 gravatar_id="1f74b13f1e5c6c69cb5d7fbaabb1e2cb" id=10308 location="San Francisco" login="sferik" name="Erik Michaels-Ober" permission=nil public_gist_count=16 public_repo_count=30 type="User">
|
30
|
-
```
|
15
|
+
### Examples
|
16
|
+
|
17
|
+
#### Show a user
|
31
18
|
|
32
|
-
### Show who a user follows
|
33
19
|
```ruby
|
34
|
-
Octokit.
|
35
|
-
=>
|
20
|
+
Octokit.user "sferik"
|
21
|
+
=> #<Hashie::Mash avatar_url="https://secure.gravatar.com/avatar/1f74b13f1e5c6c69cb5d7fbaabb1e2cb?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" bio="" blog="http://twitter.com/sferik" company="" created_at="2008-05-14T20:36:12Z" email="sferik@gmail.com" events_url="https://api.github.com/users/sferik/events{/privacy}" followers=662 followers_url="https://api.github.com/users/sferik/followers" following=102 following_url="https://api.github.com/users/sferik/following{/other_user}" gists_url="https://api.github.com/users/sferik/gists{/gist_id}" gravatar_id="1f74b13f1e5c6c69cb5d7fbaabb1e2cb" hireable=false html_url="https://github.com/sferik" id=10308 location="San Francisco, CA" login="sferik" name="Erik Michaels-Ober" organizations_url="https://api.github.com/users/sferik/orgs" public_gists=59 public_repos=83 received_events_url="https://api.github.com/users/sferik/received_events" repos_url="https://api.github.com/users/sferik/repos" starred_url="https://api.github.com/users/sferik/starred{/owner}{/repo}" subscriptions_url="https://api.github.com/users/sferik/subscriptions" type="User" updated_at="2013-05-31T16:01:08Z" url="https://api.github.com/users/sferik">
|
36
22
|
```
|
37
23
|
|
38
|
-
|
24
|
+
#### Repositories
|
25
|
+
|
39
26
|
For convenience, methods that require a repository argument may be passed in
|
40
27
|
any of the following forms:
|
41
28
|
|
42
29
|
```ruby
|
43
|
-
Octokit.repo
|
44
|
-
|
45
|
-
Octokit.repo({:username => "pengwynn", :name => "octokit"})
|
30
|
+
Octokit.repo "octokit/octokit.rb"
|
46
31
|
|
47
|
-
Octokit.repo
|
32
|
+
Octokit.repo {:username => "octokit", :name => "octokit.rb"}
|
48
33
|
|
49
|
-
Octokit.repo
|
34
|
+
Octokit.repo {:username => "octokit", :repo => "octokit.rb"}
|
50
35
|
|
51
|
-
|
36
|
+
Octokit.repo Repository.new('octokit/octokit.rb')
|
52
37
|
```
|
53
38
|
|
54
|
-
|
39
|
+
#### List the commits for a repository
|
55
40
|
|
56
41
|
```ruby
|
57
|
-
Octokit.commits("
|
42
|
+
Octokit.commits("octokit/octokit.rb")
|
58
43
|
|
59
|
-
Octokit.list_commits("
|
44
|
+
Octokit.list_commits("octokit/octokit.rb")
|
60
45
|
|
61
|
-
=> [#<Hashie::Mash author=#<Hashie::Mash avatar_url="https://secure.gravatar.com/avatar/7e19cd5486b5d6dc1ef90e671ba52ae0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" gravatar_id="7e19cd5486b5d6dc1ef90e671ba52ae0" id=865 login="pengwynn" url="https://api.github.com/users/pengwynn"> commit=#<Hashie::Mash author=#<Hashie::Mash date="2012-10-31T15:17:51Z" email="wynn@github.com" name="Wynn Netherland"> comment_count=0 committer=#<Hashie::Mash date="2012-10-31T15:17:51Z" email="wynn@github.com" name="Wynn Netherland"> message="Fix bug with archive_link for private repo" tree=#<Hashie::Mash sha="49bf2a476aa819f29b0fc1a8805f7567f010006d" url="https://api.github.com/repos/
|
46
|
+
=> [#<Hashie::Mash author=#<Hashie::Mash avatar_url="https://secure.gravatar.com/avatar/7e19cd5486b5d6dc1ef90e671ba52ae0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" gravatar_id="7e19cd5486b5d6dc1ef90e671ba52ae0" id=865 login="pengwynn" url="https://api.github.com/users/pengwynn"> commit=#<Hashie::Mash author=#<Hashie::Mash date="2012-10-31T15:17:51Z" email="wynn@github.com" name="Wynn Netherland"> comment_count=0 committer=#<Hashie::Mash date="2012-10-31T15:17:51Z" email="wynn@github.com" name="Wynn Netherland"> message="Fix bug with archive_link for private repo" tree=#<Hashie::Mash sha="49bf2a476aa819f29b0fc1a8805f7567f010006d" url="https://api.github.com/repos/octokit/octokit.rb/git/trees/49bf2a476aa819f29b0fc1a8805f7567f010006d"> url="https://api.github.com/repos/octokit/octokit.rb/git/commits/8db3df37fad3a021eb8036b007c718149836cb32"> committer=#<Hashie::Mash avatar_url="https://secure.gravatar.com/avatar/7e19cd5486b5d6dc1ef90e671ba52ae0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" gravatar_id="7e19cd5486b5d6dc1ef90e671ba52ae0" id=865 login="pengwynn" url="https://api.github.com/users/pengwynn"> parents=[#<Hashie::Mash sha="7a67f4b47791cb77de33e491df87cef06012c79f" url="https://api.github.com/repos/octokit/octokit.rb/commits/7a67f4b47791cb77de33e491df87cef06012c79f">] sha="8db3df37fad3a021eb8036b007c718149836cb32" url="https://api.github.com/repos/octokit/octokit.rb/commits/8db3df37fad3a021eb8036b007c718149836cb32">, ... , ...]
|
62
47
|
```
|
63
48
|
|
64
|
-
|
49
|
+
#### Authenticated Requests
|
65
50
|
For methods that require authentication, you'll need to setup a client with
|
66
51
|
your login and password.
|
67
52
|
|
@@ -79,26 +64,7 @@ client = Octokit::Client.new(:login => "me", :oauth_token => "oauth2token")
|
|
79
64
|
client.follow("sferik")
|
80
65
|
```
|
81
66
|
|
82
|
-
|
83
|
-
|
84
|
-
Octokit now supports [`.netrc`][netrc] files for storing your GitHub Basic Auth
|
85
|
-
credentials. Given a `~/.netrc` like the following
|
86
|
-
|
87
|
-
[netrc]: http://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-File.html
|
88
|
-
|
89
|
-
```
|
90
|
-
machine api.github.com login pengwynn password 0ct0c4tz4ev3r!
|
91
|
-
```
|
92
|
-
|
93
|
-
You can make authenticated calls by telling Octokit to use credentials from
|
94
|
-
this file:
|
95
|
-
|
96
|
-
```ruby
|
97
|
-
Octokit.netrc = true # or /path/to/file
|
98
|
-
Octokit.user # authenticates as 'pengwynn' user
|
99
|
-
```
|
100
|
-
|
101
|
-
## Requesting a specific media type
|
67
|
+
#### Requesting a specific media type
|
102
68
|
|
103
69
|
You can pass an `:accept` option value to request a particular [media
|
104
70
|
type][media-types].
|
@@ -106,10 +72,10 @@ type][media-types].
|
|
106
72
|
[media-types]: http://developer.github.com/v3/media/
|
107
73
|
|
108
74
|
```ruby
|
109
|
-
Octokit.contents '
|
75
|
+
Octokit.contents 'octokit/octokit.rb', :path => 'README.md', :accept => 'application/vnd.github.html'
|
110
76
|
```
|
111
77
|
|
112
|
-
|
78
|
+
### Using with GitHub Enterprise
|
113
79
|
|
114
80
|
To use with [GitHub Enterprise](https://enterprise.github.com/), you'll need to
|
115
81
|
set the API and web endpoints before instantiating a client.
|
@@ -173,7 +139,7 @@ dependency. Please require it explicitly if you're running Ruby 1.8
|
|
173
139
|
|
174
140
|
Octokit was initially created by Wynn Netherland and [Adam
|
175
141
|
Stacoviak](http://twitter.com/adamstac) but has
|
176
|
-
turned into a true community effort. Special thanks to the following
|
142
|
+
turned into a true community effort. Special thanks to the following
|
177
143
|
contributors:
|
178
144
|
|
179
145
|
* [Erik Michaels-Ober](http://github.com/sferik)
|
@@ -182,12 +148,14 @@ contributors:
|
|
182
148
|
|
183
149
|
|
184
150
|
## Inspiration
|
151
|
+
|
185
152
|
Octokit was inspired by [Octopi][] and aims to be a lightweight,
|
186
153
|
less-ActiveResourcey alternative.
|
187
154
|
|
188
155
|
[octopi]: https://github.com/fcoury/octopi
|
189
156
|
|
190
157
|
## Copyright
|
158
|
+
|
191
159
|
Copyright (c) 2011-2013 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober.
|
192
160
|
See [LICENSE][] for details.
|
193
161
|
|
data/lib/octokit/client.rb
CHANGED
@@ -26,6 +26,7 @@ require 'octokit/client/markdown'
|
|
26
26
|
require 'octokit/client/emojis'
|
27
27
|
require 'octokit/client/statuses'
|
28
28
|
require 'octokit/client/say'
|
29
|
+
require 'octokit/client/stats'
|
29
30
|
require 'octokit/client/rate_limit'
|
30
31
|
require 'octokit/client/gitignore'
|
31
32
|
require 'octokit/client/github'
|
@@ -69,6 +70,7 @@ module Octokit
|
|
69
70
|
include Octokit::Client::Emojis
|
70
71
|
include Octokit::Client::Statuses
|
71
72
|
include Octokit::Client::Say
|
73
|
+
include Octokit::Client::Stats
|
72
74
|
include Octokit::Client::RateLimit
|
73
75
|
include Octokit::Client::Gitignore
|
74
76
|
include Octokit::Client::GitHub
|
@@ -72,7 +72,7 @@ module Octokit
|
|
72
72
|
# @see http://developer.github.com/v3/oauth/#scopes for available scopes
|
73
73
|
# @example Update the authorization for user ctshryock's project Zoidberg
|
74
74
|
# client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
|
75
|
-
# client.
|
75
|
+
# client.update_authorization(999999, {:add_scopes => ["gist", "repo"], :note => "Why not Zoidberg possibly?"})
|
76
76
|
def update_authorization(number, options={})
|
77
77
|
# Techincally we can omit scopes as GitHub has a default, however the
|
78
78
|
# API will reject us if we send a POST request with an empty body.
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
1
3
|
module Octokit
|
2
4
|
class Client
|
3
5
|
module Contents
|
@@ -28,6 +30,107 @@ module Octokit
|
|
28
30
|
url = "repos/#{Repository.new repo}/contents/#{repo_path}"
|
29
31
|
get(url, options)
|
30
32
|
end
|
33
|
+
alias :content :contents
|
34
|
+
|
35
|
+
# Add content to a repository
|
36
|
+
#
|
37
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
38
|
+
# @param path [String] A path for the new content
|
39
|
+
# @param message [String] A commit message for adding the content
|
40
|
+
# @param optional content [String] The Base64-encoded content for the file
|
41
|
+
# @option options [String] :branch The branch on which to add the content
|
42
|
+
# @option options [String] :file Path or Ruby File object for content
|
43
|
+
# @return [Hash] The contents and commit info for the addition
|
44
|
+
# @see http://developer.github.com/v3/repos/contents/#create-a-file
|
45
|
+
# @example Add content at lib/octokit.rb
|
46
|
+
# Octokit.create_contents("pengwynn/octokit",
|
47
|
+
# "lib/octokit.rb",
|
48
|
+
# "Adding content",
|
49
|
+
# "asdf9as0df9asdf8as0d9f8==...",
|
50
|
+
# :branch => "my-new-feature")
|
51
|
+
def create_contents(*args)
|
52
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
53
|
+
repo = args.shift
|
54
|
+
path = args.shift
|
55
|
+
message = args.shift
|
56
|
+
content = args.shift
|
57
|
+
if content.nil? && file = options.delete(:file)
|
58
|
+
case file
|
59
|
+
when String
|
60
|
+
if File.exists?(file)
|
61
|
+
file = File.open(file, "r")
|
62
|
+
content = file.read
|
63
|
+
file.close
|
64
|
+
end
|
65
|
+
when File
|
66
|
+
content = file.read
|
67
|
+
file.close
|
68
|
+
end
|
69
|
+
end
|
70
|
+
raise ArgumentError.new "content or :file option required" if content.nil?
|
71
|
+
options[:content] = Base64.encode64(content).delete("\r\n")
|
72
|
+
options[:message] = message
|
73
|
+
url = "repos/#{Repository.new repo}/contents/#{path}"
|
74
|
+
put(url, options)
|
75
|
+
end
|
76
|
+
alias :create_content :create_contents
|
77
|
+
alias :add_content :create_contents
|
78
|
+
alias :add_contents :create_contents
|
79
|
+
|
80
|
+
# Update content in a repository
|
81
|
+
#
|
82
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
83
|
+
# @param path [String] A path for the content to update
|
84
|
+
# @param message [String] A commit message for updating the content
|
85
|
+
# @param sha [String] The _blob sha_ of the content to update
|
86
|
+
# @param content [String] The Base64-encoded content for the file
|
87
|
+
# @option options [String] :branch The branch on which to update the content
|
88
|
+
# @option options [String] :file Path or Ruby File object for content
|
89
|
+
# @return [Hash] The contents and commit info for the update
|
90
|
+
# @see http://developer.github.com/v3/repos/contents/#update-a-file
|
91
|
+
# @example Update content at lib/octokit.rb
|
92
|
+
# Octokit.update_contents("pengwynn/octokit",
|
93
|
+
# "lib/octokit.rb",
|
94
|
+
# "Updating content",
|
95
|
+
# "7eb95f97e1a0636015df3837478d3f15184a5f49",
|
96
|
+
# "asdf9as0df9asdf8as0d9f8==...",
|
97
|
+
# :branch => "my-new-feature")
|
98
|
+
def update_contents(*args)
|
99
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
100
|
+
repo = args.shift
|
101
|
+
path = args.shift
|
102
|
+
message = args.shift
|
103
|
+
sha = args.shift
|
104
|
+
content = args.shift
|
105
|
+
options.merge!(:sha => sha)
|
106
|
+
create_contents(repo, path, message, content, options)
|
107
|
+
end
|
108
|
+
alias :update_content :update_contents
|
109
|
+
|
110
|
+
# Delete content in a repository
|
111
|
+
#
|
112
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
113
|
+
# @param path [String] A path for the content to delete
|
114
|
+
# @param message [String] A commit message for deleting the content
|
115
|
+
# @param sha [String] The _blob sha_ of the content to delete
|
116
|
+
# @option options [String] :branch The branch on which to delete the content
|
117
|
+
# @return [Hash] The commit info for the delete
|
118
|
+
# @see http://developer.github.com/v3/repos/contents/#delete-a-file
|
119
|
+
# @example Delete content at lib/octokit.rb
|
120
|
+
# Octokit.delete_contents("pengwynn/octokit",
|
121
|
+
# "lib/octokit.rb",
|
122
|
+
# "Deleting content",
|
123
|
+
# "7eb95f97e1a0636015df3837478d3f15184a5f49",
|
124
|
+
# :branch => "my-new-feature")
|
125
|
+
def delete_contents(repo, path, message, sha, options = {})
|
126
|
+
options[:message] = message
|
127
|
+
options[:sha] = sha
|
128
|
+
url = "repos/#{Repository.new repo}/contents/#{path}"
|
129
|
+
delete(url, options)
|
130
|
+
end
|
131
|
+
alias :delete_content :delete_contents
|
132
|
+
alias :remove_content :delete_contents
|
133
|
+
alias :remove_contents :delete_contents
|
31
134
|
|
32
135
|
# This method will provide a URL to download a tarball or zipball archive for a repository.
|
33
136
|
#
|
@@ -155,6 +155,7 @@ module Octokit
|
|
155
155
|
# @option options [String] :assignee User login.
|
156
156
|
# @option options [Integer] :milestone Milestone number.
|
157
157
|
# @option options [String] :labels List of comma separated Label names. Example: <tt>bug,ui,@high</tt>.
|
158
|
+
# @option options [String] :state State of the issue. <tt>open</tt> or <tt>closed</tt>
|
158
159
|
# @return [Issue] The updated Issue
|
159
160
|
# @see http://developer.github.com/v3/issues/#edit-an-issue
|
160
161
|
# @example Change the title of Issue #25
|
@@ -6,7 +6,7 @@ module Octokit
|
|
6
6
|
#
|
7
7
|
# @param repo [String, Repository, Hash] A GitHub repository
|
8
8
|
# @param service_name [String] service name owner
|
9
|
-
# @param service_arguments [Hash] params that will be passed by
|
9
|
+
# @param service_arguments [Hash] params that will be passed by subscribed hook.
|
10
10
|
# List of services is available @ https://github.com/github/github-services/tree/master/docs.
|
11
11
|
# Please refer Data node for complete list of arguments.
|
12
12
|
# @example Subscribe to push events to one of your repositories to Travis-CI
|
data/lib/octokit/client/pulls.rb
CHANGED
@@ -131,7 +131,7 @@ module Octokit
|
|
131
131
|
# :since => '2010-05-04T23:45:02Z'
|
132
132
|
# })
|
133
133
|
def pull_requests_comments(repo, options={})
|
134
|
-
get("repos/#{Repository.new repo}/pulls/comments")
|
134
|
+
get("repos/#{Repository.new repo}/pulls/comments", options)
|
135
135
|
end
|
136
136
|
alias :pulls_comments :pull_requests_comments
|
137
137
|
alias :reviews_comments :pull_requests_comments
|
@@ -12,6 +12,17 @@ module Octokit
|
|
12
12
|
end
|
13
13
|
alias :search_repos :search_repositories
|
14
14
|
|
15
|
+
# Check if a repository exists
|
16
|
+
#
|
17
|
+
# @see http://developer.github.com/v3/repos/#get
|
18
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
19
|
+
# @return [Hashie::Mash] if a repository exists, false otherwise
|
20
|
+
def repository?(repo, options = {})
|
21
|
+
repository(repo, options)
|
22
|
+
rescue Octokit::NotFound
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
15
26
|
# Get a single repository
|
16
27
|
#
|
17
28
|
# @see http://developer.github.com/v3/repos/#get
|
@@ -75,13 +86,14 @@ module Octokit
|
|
75
86
|
#
|
76
87
|
# @return [Array] List of repositories.
|
77
88
|
def all_repositories(options={})
|
78
|
-
get '
|
89
|
+
get 'repositories', options
|
79
90
|
end
|
80
91
|
|
81
92
|
# Star a repository
|
82
93
|
#
|
83
94
|
# @param repo [String, Hash, Repository] A GitHub repository
|
84
95
|
# @return [Boolean] `true` if successfully starred
|
96
|
+
# @see http://developer.github.com/v3/activity/starring/#star-a-repository
|
85
97
|
def star(repo, options={})
|
86
98
|
boolean_from_response(:put, "user/starred/#{Repository.new repo}", options)
|
87
99
|
end
|
@@ -90,6 +102,7 @@ module Octokit
|
|
90
102
|
#
|
91
103
|
# @param repo [String, Hash, Repository] A GitHub repository
|
92
104
|
# @return [Boolean] `true` if successfully unstarred
|
105
|
+
# @see http://developer.github.com/v3/activity/starring/#unstar-a-repository
|
93
106
|
def unstar(repo, options={})
|
94
107
|
boolean_from_response(:delete, "user/starred/#{Repository.new repo}", options)
|
95
108
|
end
|
@@ -99,6 +112,7 @@ module Octokit
|
|
99
112
|
# @param repo [String, Hash, Repository] A GitHub repository
|
100
113
|
# @return [Boolean] `true` if successfully watched
|
101
114
|
# @deprecated Use #star instead
|
115
|
+
# @see http://developer.github.com/v3/activity/watching/#watch-a-repository-legacy
|
102
116
|
def watch(repo, options={})
|
103
117
|
boolean_from_response(:put, "user/watched/#{Repository.new repo}", options)
|
104
118
|
end
|
@@ -108,6 +122,7 @@ module Octokit
|
|
108
122
|
# @param repo [String, Hash, Repository] A GitHub repository
|
109
123
|
# @return [Boolean] `true` if successfully unwatched
|
110
124
|
# @deprecated Use #unstar instead
|
125
|
+
# @see http://developer.github.com/v3/activity/watching/#stop-watching-a-repository-legacy
|
111
126
|
def unwatch(repo, options={})
|
112
127
|
boolean_from_response(:delete, "user/watched/#{Repository.new repo}", options)
|
113
128
|
end
|
@@ -116,6 +131,7 @@ module Octokit
|
|
116
131
|
#
|
117
132
|
# @param repo [String, Hash, Repository] A GitHub repository
|
118
133
|
# @return [Hashie::Mash] Repository info for the new fork
|
134
|
+
# @see http://developer.github.com/v3/repos/forks/#create-a-fork
|
119
135
|
def fork(repo, options={})
|
120
136
|
post "repos/#{Repository.new repo}/forks", options
|
121
137
|
end
|
@@ -479,6 +495,7 @@ module Octokit
|
|
479
495
|
# events the hook is triggered for.
|
480
496
|
# @option options [Boolean] :active Determines whether the hook is
|
481
497
|
# actually triggered on pushes.
|
498
|
+
# @return [Hashie::Mash] Hook info for the new hook
|
482
499
|
# @see Octokit::Client
|
483
500
|
# @see https://api.github.com/hooks
|
484
501
|
# @see https://github.com/github/github-services
|
@@ -520,6 +537,7 @@ module Octokit
|
|
520
537
|
# to be removed from the list of events that the Hook triggers for.
|
521
538
|
# @option options [Boolean] :active Determines whether the hook is
|
522
539
|
# actually triggered on pushes.
|
540
|
+
# @return [Hashie::Mash] Hook info for the updated hook
|
523
541
|
# @see Octokit::Client
|
524
542
|
# @see https://api.github.com/hooks
|
525
543
|
# @see https://github.com/github/github-services
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
module Stats
|
4
|
+
|
5
|
+
# Get contributors list with additions, deletions, and commit counts
|
6
|
+
#
|
7
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
8
|
+
# @return [Array<Hashie::Mash>] Array of contributor stats
|
9
|
+
# @see http://developer.github.com/v3/repos/statistics/#get-contributors-list-with-additions-deletions-and-commit-counts
|
10
|
+
# @example Get contributor stats for octokit
|
11
|
+
# @client.contributors_stats('pengwynn/octokit')
|
12
|
+
def contributors_stats(repo)
|
13
|
+
get_stats(repo, "contributors")
|
14
|
+
end
|
15
|
+
alias :contributor_stats :contributors_stats
|
16
|
+
|
17
|
+
# Get the last year of commit activity data
|
18
|
+
#
|
19
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
20
|
+
# @return [Array<Hashie::Mash>] The last year of commit activity grouped by
|
21
|
+
# week. The days array is a group of commits per day, starting on Sunday.
|
22
|
+
# @see http://developer.github.com/v3/repos/statistics/#get-the-last-year-of-commit-activity-data
|
23
|
+
# @example Get commit activity for octokit
|
24
|
+
# @client.commit_activity_stats('pengwynn/octokit')
|
25
|
+
def commit_activity_stats(repo)
|
26
|
+
get_stats(repo, "commit_activity")
|
27
|
+
end
|
28
|
+
|
29
|
+
# Get the number of additions and deletions per week
|
30
|
+
#
|
31
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
32
|
+
# @return [Array<Hashie::Mash>] Weekly aggregate of the number of additions
|
33
|
+
# and deletions pushed to a repository.
|
34
|
+
# @see http://developer.github.com/v3/repos/statistics/#get-the-number-of-additions-and-deletions-per-week
|
35
|
+
# @example Get code frequency stats for octokit
|
36
|
+
# @client.code_frequency_stats('pengwynn/octokit')
|
37
|
+
def code_frequency_stats(repo)
|
38
|
+
get_stats(repo, "code_frequency")
|
39
|
+
end
|
40
|
+
|
41
|
+
# Get the weekly commit count for the repo owner and everyone else
|
42
|
+
#
|
43
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
44
|
+
# @return [Hashie::Mash] Total commit counts for the owner and total commit
|
45
|
+
# counts in all. all is everyone combined, including the owner in the last
|
46
|
+
# 52 weeks. If you’d like to get the commit counts for non-owners, you can
|
47
|
+
# subtract all from owner.
|
48
|
+
# @see http://developer.github.com/v3/repos/statistics/#get-the-weekly-commit-count-for-the-repo-owner-and-everyone-else
|
49
|
+
# @example Get weekly commit counts for octokit
|
50
|
+
# @client.participation_stats("pengwynn/octokit")
|
51
|
+
def participation_stats(repo)
|
52
|
+
get_stats(repo, "participation")
|
53
|
+
end
|
54
|
+
|
55
|
+
# Get the number of commits per hour in each day
|
56
|
+
#
|
57
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
58
|
+
# @return [Array<Array>] Arrays containing the day number, hour number, and
|
59
|
+
# number of commits
|
60
|
+
# @see http://developer.github.com/v3/repos/statistics/#get-the-number-of-commits-per-hour-in-each-day
|
61
|
+
# @example Get octokit punch card
|
62
|
+
# @octokit.punch_card_stats
|
63
|
+
def punch_card_stats(repo)
|
64
|
+
get_stats(repo, "punch_card")
|
65
|
+
end
|
66
|
+
alias :punch_card :punch_card_stats
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
# @private Get stats for a repository
|
71
|
+
#
|
72
|
+
# @param repo [String, Hash, Repository] A GitHub repository
|
73
|
+
# @param metric [String] The metrics you are looking for
|
74
|
+
# @return [Array<Hashie::Mash>] Magical unicorn stats
|
75
|
+
def get_stats(repo, metric)
|
76
|
+
get("repos/#{Repository.new repo}/stats/#{metric}")
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|