octokit 2.7.2 → 3.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +3 -2
- data/LICENSE.md +1 -1
- data/README.md +26 -5
- data/lib/octokit/client.rb +8 -4
- data/lib/octokit/client/authorizations.rb +7 -13
- data/lib/octokit/client/commit_comments.rb +10 -10
- data/lib/octokit/client/commits.rb +0 -87
- data/lib/octokit/client/contents.rb +7 -7
- data/lib/octokit/client/deployments.rb +83 -0
- data/lib/octokit/client/downloads.rb +0 -43
- data/lib/octokit/client/events.rb +2 -2
- data/lib/octokit/client/feeds.rb +1 -1
- data/lib/octokit/client/gists.rb +7 -7
- data/lib/octokit/client/issues.rb +7 -7
- data/lib/octokit/client/notifications.rb +2 -2
- data/lib/octokit/client/objects.rb +2 -2
- data/lib/octokit/client/organizations.rb +1 -1
- data/lib/octokit/client/pages.rb +38 -0
- data/lib/octokit/client/pub_sub_hubbub.rb +9 -4
- data/lib/octokit/client/pull_requests.rb +27 -18
- data/lib/octokit/client/releases.rb +1 -1
- data/lib/octokit/client/repositories.rb +39 -38
- data/lib/octokit/client/stats.rb +5 -5
- data/lib/octokit/client/users.rb +13 -13
- data/lib/octokit/default.rb +2 -2
- data/lib/octokit/error.rb +1 -1
- data/lib/octokit/rate_limit.rb +4 -4
- data/lib/octokit/response/raise_error.rb +1 -1
- data/lib/octokit/version.rb +1 -1
- data/octokit.gemspec +2 -1
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba2a0b7ef2fe7ccfc4d47d20101e1bf1df5352b6
|
4
|
+
data.tar.gz: 00d6d398a4682911be8b46d7cc0e0a5320afbdd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d754b8c098880c8e738ba09b2c96db93e5ec70961cb8b3a9b20876ebf6f3034f70f662bf63f6268f596d5aaa740c6fb06996db714148319a1e20d95028ba4f9d
|
7
|
+
data.tar.gz: 8c164081ca60967730307c8d98dd1822cb0bc3ada9876cd192ca39d9ac790881e7424f53b1762929b64078bd374211d215a5c0ee65708c64c68fbe122ee70dd1
|
data/CONTRIBUTING.md
CHANGED
@@ -9,11 +9,12 @@
|
|
9
9
|
5. Implement your feature or bug fix.
|
10
10
|
6. Run `script/test`. If your specs fail, return to step 5.
|
11
11
|
7. Run `open coverage/index.html`. If your changes are not completely covered
|
12
|
-
by your tests, return to step
|
12
|
+
by your tests, return to step 4.
|
13
13
|
8. Add documentation for your feature or bug fix.
|
14
14
|
9. Run `bundle exec rake doc:yard`. If your changes are not 100% documented, go
|
15
15
|
back to step 8.
|
16
|
-
10. Add, commit, and push your changes.
|
16
|
+
10. Add, commit, and push your changes. For documentation-only fixes, please
|
17
|
+
add "[ci skip]" to your commit message to avoid needless CI builds.
|
17
18
|
11. [Submit a pull request.][pr]
|
18
19
|
|
19
20
|
[fork]: https://help.github.com/articles/fork-a-repo
|
data/LICENSE.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2009-
|
1
|
+
Copyright (c) 2009-2014 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -54,7 +54,7 @@ or
|
|
54
54
|
|
55
55
|
```ruby
|
56
56
|
# Provide authentication credentials
|
57
|
-
client = Octokit::Client.new
|
57
|
+
client = Octokit::Client.new(:login => 'defunkt', :password => 'c0d3b4ssssss!')
|
58
58
|
# Fetch the current user
|
59
59
|
client.user
|
60
60
|
```
|
@@ -129,7 +129,7 @@ To use an access token with the Octokit client, just pass it in lieu of your
|
|
129
129
|
username and password:
|
130
130
|
|
131
131
|
```ruby
|
132
|
-
client = Octokit::Client.new
|
132
|
+
client = Octokit::Client.new(:access_token => "<your 40 char token>")
|
133
133
|
|
134
134
|
user = client.user
|
135
135
|
user.login
|
@@ -141,7 +141,7 @@ that you can use for subsequent calls.
|
|
141
141
|
|
142
142
|
### Two-Factor Authentication
|
143
143
|
|
144
|
-
[Two-Factor Authentication](https://help.github.com/articles/about-two-factor-authentication) brings added security to the account by requiring more information to login.
|
144
|
+
[Two-Factor Authentication](https://help.github.com/articles/about-two-factor-authentication) brings added security to the account by requiring more information to login.
|
145
145
|
|
146
146
|
Using two-factor authentication for API calls is as simple as adding the [required header](http://developer.github.com/v3/auth/#working-with-two-factor-authentication) as an option:
|
147
147
|
|
@@ -177,7 +177,7 @@ machine api.github.com
|
|
177
177
|
You can now create a client with those credentials:
|
178
178
|
|
179
179
|
```ruby
|
180
|
-
client = Octokit::Client.new
|
180
|
+
client = Octokit::Client.new(:netrc => true)
|
181
181
|
client.login
|
182
182
|
# => "defunkt"
|
183
183
|
```
|
@@ -482,6 +482,7 @@ implementations:
|
|
482
482
|
* Ruby 1.9.2
|
483
483
|
* Ruby 1.9.3
|
484
484
|
* Ruby 2.0.0
|
485
|
+
* Ruby 2.1.0
|
485
486
|
|
486
487
|
If something doesn't work on one of these Ruby versions, it's a bug.
|
487
488
|
|
@@ -516,4 +517,24 @@ Constraint][pvc] with two digits of precision. For example:
|
|
516
517
|
|
517
518
|
## License
|
518
519
|
|
519
|
-
|
520
|
+
Copyright (c) 2009-2014 Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober
|
521
|
+
|
522
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
523
|
+
a copy of this software and associated documentation files (the
|
524
|
+
"Software"), to deal in the Software without restriction, including
|
525
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
526
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
527
|
+
permit persons to whom the Software is furnished to do so, subject to
|
528
|
+
the following conditions:
|
529
|
+
|
530
|
+
The above copyright notice and this permission notice shall be
|
531
|
+
included in all copies or substantial portions of the Software.
|
532
|
+
|
533
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
534
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
535
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
536
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
537
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
538
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
539
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
540
|
+
|
data/lib/octokit/client.rb
CHANGED
@@ -11,6 +11,7 @@ require 'octokit/client/commits'
|
|
11
11
|
require 'octokit/client/commit_comments'
|
12
12
|
require 'octokit/client/contents'
|
13
13
|
require 'octokit/client/downloads'
|
14
|
+
require 'octokit/client/deployments'
|
14
15
|
require 'octokit/client/emojis'
|
15
16
|
require 'octokit/client/events'
|
16
17
|
require 'octokit/client/feeds'
|
@@ -26,6 +27,7 @@ require 'octokit/client/milestones'
|
|
26
27
|
require 'octokit/client/notifications'
|
27
28
|
require 'octokit/client/objects'
|
28
29
|
require 'octokit/client/organizations'
|
30
|
+
require 'octokit/client/pages'
|
29
31
|
require 'octokit/client/pub_sub_hubbub'
|
30
32
|
require 'octokit/client/pull_requests'
|
31
33
|
require 'octokit/client/rate_limit'
|
@@ -52,6 +54,7 @@ module Octokit
|
|
52
54
|
include Octokit::Client::Commits
|
53
55
|
include Octokit::Client::CommitComments
|
54
56
|
include Octokit::Client::Contents
|
57
|
+
include Octokit::Client::Deployments
|
55
58
|
include Octokit::Client::Downloads
|
56
59
|
include Octokit::Client::Emojis
|
57
60
|
include Octokit::Client::Events
|
@@ -68,6 +71,7 @@ module Octokit
|
|
68
71
|
include Octokit::Client::Notifications
|
69
72
|
include Octokit::Client::Objects
|
70
73
|
include Octokit::Client::Organizations
|
74
|
+
include Octokit::Client::Pages
|
71
75
|
include Octokit::Client::PubSubHubbub
|
72
76
|
include Octokit::Client::PullRequests
|
73
77
|
include Octokit::Client::RateLimit
|
@@ -82,7 +86,7 @@ module Octokit
|
|
82
86
|
include Octokit::Client::Users
|
83
87
|
|
84
88
|
# Header keys that can be passed in options hash to {#get},{#head}
|
85
|
-
CONVENIENCE_HEADERS = Set.new
|
89
|
+
CONVENIENCE_HEADERS = Set.new([:accept, :content_type])
|
86
90
|
|
87
91
|
def initialize(options = {})
|
88
92
|
# Use options passed in, but fall back to module defaults
|
@@ -183,7 +187,7 @@ module Octokit
|
|
183
187
|
# @param block [Block] Block to perform the data concatination of the
|
184
188
|
# multiple requests. The block is called with two parameters, the first
|
185
189
|
# contains the contents of the requests so far and the second parameter
|
186
|
-
# contains the latest response.
|
190
|
+
# contains the latest response.
|
187
191
|
# @return [Sawyer::Resource]
|
188
192
|
def paginate(url, options = {}, &block)
|
189
193
|
opts = parse_query_and_convenience_headers(options.dup)
|
@@ -236,7 +240,7 @@ module Octokit
|
|
236
240
|
#
|
237
241
|
# @return [Sawyer::Response]
|
238
242
|
def last_response
|
239
|
-
@last_response
|
243
|
+
@last_response if defined? @last_response
|
240
244
|
end
|
241
245
|
|
242
246
|
private
|
@@ -254,7 +258,7 @@ module Octokit
|
|
254
258
|
options[:query].merge! application_authentication
|
255
259
|
end
|
256
260
|
|
257
|
-
@last_response = response = agent.call(method, URI.
|
261
|
+
@last_response = response = agent.call(method, URI::Parser.new.escape(path.to_s), data, options)
|
258
262
|
response.data
|
259
263
|
end
|
260
264
|
|
@@ -3,7 +3,7 @@ module Octokit
|
|
3
3
|
|
4
4
|
# Methods for the Authorizations API
|
5
5
|
#
|
6
|
-
# @see http://developer.github.com/v3/
|
6
|
+
# @see http://developer.github.com/v3/oauth_authorizations/#oauth-authorizations-api
|
7
7
|
module Authorizations
|
8
8
|
|
9
9
|
# List the authenticated user's authorizations
|
@@ -13,7 +13,7 @@ module Octokit
|
|
13
13
|
# Basic Authentication.
|
14
14
|
#
|
15
15
|
# @return [Array<Sawyer::Resource>] A list of authorizations for the authenticated user
|
16
|
-
# @see http://developer.github.com/v3/
|
16
|
+
# @see http://developer.github.com/v3/oauth_authorizations/#list-your-authorizations
|
17
17
|
# @example List authorizations for user ctshryock
|
18
18
|
# client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
|
19
19
|
# client.authorizations
|
@@ -27,7 +27,7 @@ module Octokit
|
|
27
27
|
# Basic Authentication.
|
28
28
|
#
|
29
29
|
# @return [Sawyer::Resource] A single authorization for the authenticated user
|
30
|
-
# @see http://developer.github.com/v3/
|
30
|
+
# @see http://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization
|
31
31
|
# @example Show authorization for user ctshryock's Travis auth
|
32
32
|
# client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
|
33
33
|
# client.authorization(999999)
|
@@ -50,7 +50,7 @@ module Octokit
|
|
50
50
|
#
|
51
51
|
# @return [Sawyer::Resource] A single authorization for the authenticated user
|
52
52
|
# @see http://developer.github.com/v3/oauth/#scopes Available scopes
|
53
|
-
# @see http://developer.github.com/v3/
|
53
|
+
# @see http://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization
|
54
54
|
# @example Create a new authorization for user ctshryock's project Zoidberg
|
55
55
|
# client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
|
56
56
|
# client.create_authorization({:scopes => ["public_repo","gist"], :note => "Why not Zoidberg?", :note_url=> "https://en.wikipedia.org/wiki/Zoidberg"})
|
@@ -84,7 +84,7 @@ module Octokit
|
|
84
84
|
# @option options [String] :note_url A URL to remind you what app the OAuth token is for.
|
85
85
|
#
|
86
86
|
# @return [Sawyer::Resource] A single (updated) authorization for the authenticated user
|
87
|
-
# @see http://developer.github.com/v3/
|
87
|
+
# @see http://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
|
88
88
|
# @see http://developer.github.com/v3/oauth/#scopes for available scopes
|
89
89
|
# @example Update the authorization for user ctshryock's project Zoidberg
|
90
90
|
# client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
|
@@ -101,7 +101,7 @@ module Octokit
|
|
101
101
|
# @param number [Number] An existing Authorization ID
|
102
102
|
#
|
103
103
|
# @return [Boolean] Success
|
104
|
-
# @see http://developer.github.com/v3/
|
104
|
+
# @see http://developer.github.com/v3/oauth_authorizations/#delete-an-authorization
|
105
105
|
# @example Delete an authorization
|
106
106
|
# client = Octokit::Client.new(:login => 'ctshryock', :password => 'secret')
|
107
107
|
# client.delete_authorization(999999)
|
@@ -138,13 +138,7 @@ module Octokit
|
|
138
138
|
# @see http://developer.github.com/v3/oauth/#web-application-flow
|
139
139
|
# @example
|
140
140
|
# @client.authorize_url('xxxx')
|
141
|
-
def authorize_url(
|
142
|
-
arguments = Arguments.new(args)
|
143
|
-
options = arguments.options
|
144
|
-
app_id = arguments.shift || client_id
|
145
|
-
if app_secret = arguments.shift
|
146
|
-
warn "client_secret is not required for this method"
|
147
|
-
end
|
141
|
+
def authorize_url(app_id = client_id, options = {})
|
148
142
|
authorize_url = options.delete(:endpoint) || Octokit.web_endpoint
|
149
143
|
authorize_url += "login/oauth/authorize?client_id=" + app_id
|
150
144
|
|
@@ -46,16 +46,16 @@ module Octokit
|
|
46
46
|
# @return [Sawyer::Resource] Commit comment
|
47
47
|
# @see http://developer.github.com/v3/repos/comments/#create-a-commit-comment
|
48
48
|
# @example Create a commit comment
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
49
|
+
# comment = Octokit.create_commit_comment("octocat/Hello-World", "827efc6d56897b048c772eb4087f854f46256132", "My comment message", "README.md", 10, 1)
|
50
|
+
# comment.commit_id # => "827efc6d56897b048c772eb4087f854f46256132"
|
51
|
+
# comment.id # => 54321
|
52
|
+
# comment.body # => "My comment message"
|
53
|
+
# comment.path # => "README.md"
|
54
|
+
# comment.line # => 10
|
55
|
+
# comment.position # => 1
|
55
56
|
def create_commit_comment(repo, sha, body, path=nil, line=nil, position=nil, options = {})
|
56
57
|
params = {
|
57
58
|
:body => body,
|
58
|
-
:commit_id => sha,
|
59
59
|
:path => path,
|
60
60
|
:line => line,
|
61
61
|
:position => position
|
@@ -71,9 +71,9 @@ module Octokit
|
|
71
71
|
# @return [Sawyer::Resource] Updated commit comment
|
72
72
|
# @see http://developer.github.com/v3/repos/comments/#update-a-commit-comment
|
73
73
|
# @example Update a commit comment
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
74
|
+
# comment = Octokit.update_commit_comment("octocat/Hello-World", "860296", "Updated commit comment")
|
75
|
+
# comment.id # => 860296
|
76
|
+
# comment.body # => "Updated commit comment"
|
77
77
|
def update_commit_comment(repo, id, body, options = {})
|
78
78
|
params = {
|
79
79
|
:body => body
|
@@ -50,7 +50,6 @@ module Octokit
|
|
50
50
|
arguments = Octokit::RepoArguments.new(args)
|
51
51
|
date = parse_date(arguments.shift)
|
52
52
|
params = arguments.options
|
53
|
-
end_date = date + 1
|
54
53
|
params.merge!(:since => iso8601(date))
|
55
54
|
sha_or_branch = arguments.pop
|
56
55
|
if sha_or_branch
|
@@ -77,7 +76,6 @@ module Octokit
|
|
77
76
|
arguments = Octokit::RepoArguments.new(args)
|
78
77
|
date = parse_date(arguments.shift)
|
79
78
|
params = arguments.options
|
80
|
-
end_date = date + 1
|
81
79
|
params.merge!(:until => iso8601(date))
|
82
80
|
sha_or_branch = arguments.pop
|
83
81
|
if sha_or_branch
|
@@ -189,91 +187,6 @@ module Octokit
|
|
189
187
|
post "repos/#{Repository.new(repo)}/git/commits", options.merge(params)
|
190
188
|
end
|
191
189
|
|
192
|
-
# List all commit comments
|
193
|
-
#
|
194
|
-
# @param repo [String, Hash, Repository] A GitHub repository
|
195
|
-
# @return [Array] An array of hashes representing comments
|
196
|
-
# @see http://developer.github.com/v3/repos/comments/#list-commit-comments-for-a-repository
|
197
|
-
def list_commit_comments(repo, options = {})
|
198
|
-
get "repos/#{Repository.new(repo)}/comments", options
|
199
|
-
end
|
200
|
-
|
201
|
-
# List comments for a single commit
|
202
|
-
#
|
203
|
-
# @param repo [String, Hash, Repository] A GitHub repository
|
204
|
-
# @param sha [String] The SHA of the commit whose comments will be fetched
|
205
|
-
# @return [Array] An array of hashes representing comments
|
206
|
-
# @see http://developer.github.com/v3/repos/comments/#list-comments-for-a-single-commit
|
207
|
-
def commit_comments(repo, sha, options = {})
|
208
|
-
get "repos/#{Repository.new(repo)}/commits/#{sha}/comments", options
|
209
|
-
end
|
210
|
-
|
211
|
-
# Get a single commit comment
|
212
|
-
#
|
213
|
-
# @param repo [String, Hash, Repository] A GitHub repository
|
214
|
-
# @param id [String] The ID of the comment to fetch
|
215
|
-
# @return [Sawyer::Resource] A hash representing the comment
|
216
|
-
# @see http://developer.github.com/v3/repos/comments/#get-a-single-commit-comment
|
217
|
-
def commit_comment(repo, id, options = {})
|
218
|
-
get "repos/#{Repository.new(repo)}/comments/#{id}", options
|
219
|
-
end
|
220
|
-
|
221
|
-
# Create a commit comment
|
222
|
-
#
|
223
|
-
# @param repo [String, Hash, Repository] A GitHub repository
|
224
|
-
# @param sha [String] Sha of the commit to comment on
|
225
|
-
# @param body [String] Message
|
226
|
-
# @param path [String] Relative path of file to comment on
|
227
|
-
# @param line [Integer] Line number in the file to comment on
|
228
|
-
# @param position [Integer] Line index in the diff to comment on
|
229
|
-
# @return [Sawyer::Resource] A hash representing the new commit comment
|
230
|
-
# @see http://developer.github.com/v3/repos/comments/#create-a-commit-comment
|
231
|
-
# @example Create a commit comment
|
232
|
-
# commit = Octokit.create_commit_comment("octocat/Hello-World", "827efc6d56897b048c772eb4087f854f46256132", "My comment message", "README.md", 10, 1)
|
233
|
-
# commit.commit_id # => "827efc6d56897b048c772eb4087f854f46256132"
|
234
|
-
# commit.body # => "My comment message"
|
235
|
-
# commit.path # => "README.md"
|
236
|
-
# commit.line # => 10
|
237
|
-
# commit.position # => 1
|
238
|
-
def create_commit_comment(repo, sha, body, path=nil, line=nil, position=nil, options = {})
|
239
|
-
params = {
|
240
|
-
:body => body,
|
241
|
-
:commit_id => sha,
|
242
|
-
:path => path,
|
243
|
-
:line => line,
|
244
|
-
:position => position
|
245
|
-
}
|
246
|
-
post "repos/#{Repository.new(repo)}/commits/#{sha}/comments", options.merge(params)
|
247
|
-
end
|
248
|
-
|
249
|
-
# Update a commit comment
|
250
|
-
#
|
251
|
-
# @param repo [String, Hash, Repository] A GitHub repository
|
252
|
-
# @param id [String] The ID of the comment to update
|
253
|
-
# @param body [String] Message
|
254
|
-
# @return [Sawyer::Resource] A hash representing the updated commit comment
|
255
|
-
# @see http://developer.github.com/v3/repos/comments/#update-a-commit-comment
|
256
|
-
# @example Update a commit comment
|
257
|
-
# commit = Octokit.update_commit_comment("octocat/Hello-World", "860296", "Updated commit comment")
|
258
|
-
# commit.id # => 860296
|
259
|
-
# commit.body # => "Updated commit comment"
|
260
|
-
def update_commit_comment(repo, id, body, options = {})
|
261
|
-
params = {
|
262
|
-
:body => body
|
263
|
-
}
|
264
|
-
patch "repos/#{Repository.new(repo)}/comments/#{id}", options.merge(params)
|
265
|
-
end
|
266
|
-
|
267
|
-
# Delete a commit comment
|
268
|
-
#
|
269
|
-
# @param repo [String, Hash, Repository] A GitHub repository
|
270
|
-
# @param id [String] The ID of the comment to delete
|
271
|
-
# @return [nil] nil
|
272
|
-
# @see http://developer.github.com/v3/repos/comments/#delete-a-commit-comment
|
273
|
-
def delete_commit_comment(repo, id, options = {})
|
274
|
-
boolean_from_response :delete, "repos/#{Repository.new(repo)}/comments/#{id}", options
|
275
|
-
end
|
276
|
-
|
277
190
|
# Compare two commits
|
278
191
|
#
|
279
192
|
# @param repo [String, Hash, Repository] A GitHub repository
|
@@ -17,7 +17,7 @@ module Octokit
|
|
17
17
|
# @example Get the readme file for a repo
|
18
18
|
# Octokit.readme("octokit/octokit.rb")
|
19
19
|
def readme(repo, options={})
|
20
|
-
get "repos/#{Repository.new
|
20
|
+
get "repos/#{Repository.new(repo)}/readme", options
|
21
21
|
end
|
22
22
|
|
23
23
|
# Receive a listing of a repository folder or the contents of a file
|
@@ -31,7 +31,7 @@ module Octokit
|
|
31
31
|
# Octokit.contents("octokit/octokit.rb", :path => 'lib/octokit.rb')
|
32
32
|
def contents(repo, options={})
|
33
33
|
repo_path = options.delete :path
|
34
|
-
url = "repos/#{Repository.new
|
34
|
+
url = "repos/#{Repository.new(repo)}/contents/#{repo_path}"
|
35
35
|
get url, options
|
36
36
|
end
|
37
37
|
alias :content :contents
|
@@ -62,7 +62,7 @@ module Octokit
|
|
62
62
|
if content.nil? && file = options.delete(:file)
|
63
63
|
case file
|
64
64
|
when String
|
65
|
-
if File.
|
65
|
+
if File.exist?(file)
|
66
66
|
file = File.open(file, "r")
|
67
67
|
content = file.read
|
68
68
|
file.close
|
@@ -72,12 +72,12 @@ module Octokit
|
|
72
72
|
file.close
|
73
73
|
end
|
74
74
|
end
|
75
|
-
raise ArgumentError.new
|
75
|
+
raise ArgumentError.new("content or :file option required") if content.nil?
|
76
76
|
options[:content] = Base64.respond_to?(:strict_encode64) ?
|
77
77
|
Base64.strict_encode64(content) :
|
78
78
|
Base64.encode64(content).delete("\n") # Ruby 1.9.2
|
79
79
|
options[:message] = message
|
80
|
-
url = "repos/#{Repository.new
|
80
|
+
url = "repos/#{Repository.new(repo)}/contents/#{path}"
|
81
81
|
put url, options
|
82
82
|
end
|
83
83
|
alias :create_content :create_contents
|
@@ -133,7 +133,7 @@ module Octokit
|
|
133
133
|
def delete_contents(repo, path, message, sha, options = {})
|
134
134
|
options[:message] = message
|
135
135
|
options[:sha] = sha
|
136
|
-
url = "repos/#{Repository.new
|
136
|
+
url = "repos/#{Repository.new(repo)}/contents/#{path}"
|
137
137
|
delete url, options
|
138
138
|
end
|
139
139
|
alias :delete_content :delete_contents
|
@@ -152,7 +152,7 @@ module Octokit
|
|
152
152
|
def archive_link(repo, options={})
|
153
153
|
repo_ref = options.delete :ref
|
154
154
|
format = (options.delete :format) || 'tarball'
|
155
|
-
url = "repos/#{Repository.new
|
155
|
+
url = "repos/#{Repository.new(repo)}/#{format}/#{repo_ref}"
|
156
156
|
request :head, url, options
|
157
157
|
|
158
158
|
last_response.headers['Location']
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Octokit
|
2
|
+
class Client
|
3
|
+
|
4
|
+
# Methods for the Deployments API
|
5
|
+
#
|
6
|
+
# @see http://developer.github.com/v3/repos/commits/deployments/
|
7
|
+
module Deployments
|
8
|
+
|
9
|
+
DEPLOYMENTS_PREVIEW_MEDIA_TYPE = "application/vnd.github.cannonball-preview+json".freeze
|
10
|
+
|
11
|
+
# List all deployments for a repository
|
12
|
+
#
|
13
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
14
|
+
# @return [Array<Sawyer::Resource>] A list of deployments
|
15
|
+
# @see http://developer.github.com/v3/repos/deployments/#list-deployments
|
16
|
+
def deployments(repo, options = {})
|
17
|
+
options = ensure_deployments_api_media_type(options)
|
18
|
+
get("repos/#{Repository.new(repo)}/deployments", options)
|
19
|
+
end
|
20
|
+
alias :list_deployments :deployments
|
21
|
+
|
22
|
+
# Create a deployment for a ref
|
23
|
+
#
|
24
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
25
|
+
# @param ref [String] The ref to deploy
|
26
|
+
# @option options [String] :payload Meta info about the deployment
|
27
|
+
# @option options [String] :force Optional parameter to bypass any ahead/behind checks or commit status checks. Default: false
|
28
|
+
# @option options [String] :auto_merge Optional parameter to merge the default branch into the requested deployment branch if necessary. Default: false
|
29
|
+
# @option options [String] :description Optional short description.
|
30
|
+
# @return [Sawyer::Resource] A deployment
|
31
|
+
# @see http://developer.github.com/v3/repos/deployments/#create-a-deployment
|
32
|
+
def create_deployment(repo, ref, options = {})
|
33
|
+
options = ensure_deployments_api_media_type(options)
|
34
|
+
options[:ref] = ref
|
35
|
+
post("repos/#{Repository.new(repo)}/deployments", options)
|
36
|
+
end
|
37
|
+
|
38
|
+
# List all statuses for a Deployment
|
39
|
+
#
|
40
|
+
# @param deployment_url [String] A URL for a deployment resource
|
41
|
+
# @return [Array<Sawyer::Resource>] A list of deployment statuses
|
42
|
+
# @see http://developer.github.com/v3/repos/deployments/#list-deployment-statuses
|
43
|
+
def deployment_statuses(deployment_url, options = {})
|
44
|
+
options = ensure_deployments_api_media_type(options)
|
45
|
+
deployment = get(deployment_url, :accept => options[:accept])
|
46
|
+
get(deployment.rels[:statuses].href, options)
|
47
|
+
end
|
48
|
+
alias :list_deployment_statuses :deployment_statuses
|
49
|
+
|
50
|
+
# Create a deployment status for a Deployment
|
51
|
+
#
|
52
|
+
# @param deployment_url [String] A URL for a deployment resource
|
53
|
+
# @param state [String] The state: pending, success, failure, error
|
54
|
+
# @return [Sawyer::Resource] A deployment status
|
55
|
+
# @see http://developer.github.com/v3/repos/deployments/#create-a-deployment-status
|
56
|
+
def create_deployment_status(deployment_url, state, options = {})
|
57
|
+
options = ensure_deployments_api_media_type(options)
|
58
|
+
deployment = get(deployment_url, :accept => options[:accept])
|
59
|
+
options[:state] = state.to_s.downcase
|
60
|
+
post(deployment.rels[:statuses].href, options)
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def ensure_deployments_api_media_type(options = {})
|
66
|
+
if options[:accept].nil?
|
67
|
+
options[:accept] = DEPLOYMENTS_PREVIEW_MEDIA_TYPE
|
68
|
+
warn_deployments_preview
|
69
|
+
end
|
70
|
+
|
71
|
+
options
|
72
|
+
end
|
73
|
+
|
74
|
+
def warn_deployments_preview
|
75
|
+
warn <<-EOS
|
76
|
+
WARNING: The preview version of the Deployments API is not yet suitable for production use.
|
77
|
+
You can avoid this message by supplying an appropriate media type in the 'Accept' request
|
78
|
+
header. See the blog post for details: http://git.io/o2XZRA
|
79
|
+
EOS
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|