octokit 0.6.3 → 0.6.4
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/.travis.yml +1 -0
- data/CHANGELOG.md +18 -18
- data/README.md +5 -3
- data/Rakefile +2 -0
- data/lib/faraday/response/{raise_error.rb → raise_octokit_error.rb} +11 -2
- data/lib/octokit.rb +18 -46
- data/lib/octokit/authentication.rb +21 -0
- data/lib/octokit/client.rb +13 -6
- data/lib/octokit/client/commits.rb +2 -2
- data/lib/octokit/client/issues.rb +184 -21
- data/lib/octokit/client/milestones.rb +87 -0
- data/lib/octokit/client/network.rb +2 -4
- data/lib/octokit/client/objects.rb +6 -8
- data/lib/octokit/client/organizations.rb +18 -19
- data/lib/octokit/client/pub_sub_hubbub.rb +41 -0
- data/lib/octokit/client/pub_sub_hubbub/service_hooks.rb +41 -0
- data/lib/octokit/client/pulls.rb +12 -3
- data/lib/octokit/client/repositories.rb +28 -30
- data/lib/octokit/client/timelines.rb +3 -5
- data/lib/octokit/client/users.rb +40 -18
- data/lib/octokit/connection.rb +42 -0
- data/lib/octokit/error.rb +34 -0
- data/lib/octokit/request.rb +44 -0
- data/lib/octokit/version.rb +1 -1
- data/octokit.gemspec +33 -28
- data/puppeteer.jpg +0 -0
- data/spec/faraday/response_spec.rb +2 -1
- data/spec/fixtures/v2/commit.json +1 -1
- data/spec/fixtures/v3/comment.json +14 -0
- data/spec/fixtures/v3/comments.json +44 -0
- data/spec/fixtures/v3/label.json +5 -0
- data/spec/fixtures/v3/labels.json +17 -0
- data/spec/fixtures/v3/milestone.json +12 -0
- data/spec/fixtures/v3/milestones.json +28 -0
- data/spec/fixtures/v3/not_found.json +3 -0
- data/spec/fixtures/v3/user.json +20 -0
- data/spec/helper.rb +14 -11
- data/spec/octokit/client/commits_spec.rb +3 -3
- data/spec/octokit/client/issues_spec.rb +82 -44
- data/spec/octokit/client/milestones_spec.rb +67 -0
- data/spec/octokit/client/objects_spec.rb +6 -6
- data/spec/octokit/client/organizations_spec.rb +19 -19
- data/spec/octokit/client/pub_sub_hubbub/service_hooks_spec.rb +45 -0
- data/spec/octokit/client/pub_sub_hubbub_spec.rb +49 -0
- data/spec/octokit/client/pulls_spec.rb +15 -3
- data/spec/octokit/client/repositories_spec.rb +30 -30
- data/spec/octokit/client/users_spec.rb +26 -26
- data/spec/octokit/client_spec.rb +2 -2
- data/spec/octokit_spec.rb +12 -3
- metadata +147 -55
- data/lib/octokit/client/authentication.rb +0 -23
- data/lib/octokit/client/connection.rb +0 -33
- data/lib/octokit/client/request.rb +0 -42
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
* [0.6.3 - May 5, 2011](https://github.com/
|
4
|
-
* [0.6.2 - April 26, 2011](https://github.com/
|
5
|
-
* [0.6.1 - April 6, 2011](https://github.com/
|
6
|
-
* [0.6.0 - March 20, 2011](https://github.com/
|
7
|
-
* [0.5.2 - February 6, 2011](https://github.com/
|
8
|
-
* [0.5.1 - February 3, 2011](https://github.com/
|
9
|
-
* [0.5.0 - January 21, 2011](https://github.com/
|
10
|
-
* [0.4.1 - January 8, 2011](https://github.com/
|
11
|
-
* [0.2.3 - June 17, 2010](https://github.com/
|
12
|
-
* [0.2.2 - June 8, 2010](https://github.com/
|
13
|
-
* [0.2.1 - May 4, 2010](https://github.com/
|
14
|
-
* [0.2.0 - April 30, 2010](https://github.com/
|
15
|
-
* [0.1.4 - January 13, 2010](https://github.com/
|
16
|
-
* [0.1.3 - December 16, 2009](https://github.com/
|
17
|
-
* [0.1.2 - December 16, 2009](https://github.com/
|
18
|
-
* [0.1.1 - December 15, 2009](https://github.com/
|
19
|
-
* [0.1.0 - December 12, 2009](https://github.com/
|
20
|
-
* [0.0.1 - December 12, 2009](https://github.com/
|
3
|
+
* [0.6.3 - May 5, 2011](https://github.com/pengwynn/octokit/compare/v0.6.2...v0.6.3)
|
4
|
+
* [0.6.2 - April 26, 2011](https://github.com/pengwynn/octokit/compare/v0.6.1...v0.6.2)
|
5
|
+
* [0.6.1 - April 6, 2011](https://github.com/pengwynn/octokit/compare/v0.6.0...v0.6.1)
|
6
|
+
* [0.6.0 - March 20, 2011](https://github.com/pengwynn/octokit/compare/v0.5.2...v0.6.0)
|
7
|
+
* [0.5.2 - February 6, 2011](https://github.com/pengwynn/octokit/compare/v0.5.1...v0.5.2)
|
8
|
+
* [0.5.1 - February 3, 2011](https://github.com/pengwynn/octokit/compare/v0.5.0...v0.5.1)
|
9
|
+
* [0.5.0 - January 21, 2011](https://github.com/pengwynn/octokit/compare/v0.4.1...v0.5.0)
|
10
|
+
* [0.4.1 - January 8, 2011](https://github.com/pengwynn/octokit/compare/v0.2.3...v0.4.1)
|
11
|
+
* [0.2.3 - June 17, 2010](https://github.com/pengwynn/octokit/compare/v0.2.2...v0.2.3)
|
12
|
+
* [0.2.2 - June 8, 2010](https://github.com/pengwynn/octokit/compare/v0.2.1...v0.2.2)
|
13
|
+
* [0.2.1 - May 4, 2010](https://github.com/pengwynn/octokit/compare/v0.2.0...v0.2.1)
|
14
|
+
* [0.2.0 - April 30, 2010](https://github.com/pengwynn/octokit/compare/v0.1.4...v0.2.0)
|
15
|
+
* [0.1.4 - January 13, 2010](https://github.com/pengwynn/octokit/compare/v0.1.3...v0.1.4)
|
16
|
+
* [0.1.3 - December 16, 2009](https://github.com/pengwynn/octokit/compare/v0.1.2...v0.1.3)
|
17
|
+
* [0.1.2 - December 16, 2009](https://github.com/pengwynn/octokit/compare/v0.1.1...v0.1.2)
|
18
|
+
* [0.1.1 - December 15, 2009](https://github.com/pengwynn/octokit/compare/v0.1.0...v0.1.1)
|
19
|
+
* [0.1.0 - December 12, 2009](https://github.com/pengwynn/octokit/compare/v0.0.1...v0.1.0)
|
20
|
+
* [0.0.1 - December 12, 2009](https://github.com/pengwynn/octokit/compare/cb7d5480944229e1a5ddfa9d1113903628765584...v0.0.1)
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@ Octokit
|
|
2
2
|
=======
|
3
3
|
Simple Ruby wrapper for the GitHub v2 API.
|
4
4
|
|
5
|
+
 by [](https://github.com/cameronmcefee)
|
6
|
+
|
5
7
|
Installation
|
6
8
|
------------
|
7
9
|
gem install octokit
|
@@ -20,7 +22,7 @@ Examples
|
|
20
22
|
### Show a user
|
21
23
|
|
22
24
|
Octokit.user("sferik")
|
23
|
-
=> <#Hashie::
|
25
|
+
=> <#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">
|
24
26
|
|
25
27
|
### Show who a user follows
|
26
28
|
|
@@ -36,7 +38,7 @@ For convenience, methods that require a repoistory argument may be passed in any
|
|
36
38
|
* instance of `Repository`
|
37
39
|
|
38
40
|
Octokit.repo("pengwynn/octokit")
|
39
|
-
=> <#Hashie::
|
41
|
+
=> <#Hashie::Rash created_at="2009/12/10 13:41:49 -0800" description="Simple Ruby wrapper for the GitHub v2 API and feeds" fork=false forks=25 has_downloads=true has_issues=true has_wiki=true homepage="http://wynnnetherland.com/projects/octokit" integrate_branch="master" language="Ruby" name="octokit" open_issues=8 owner="pengwynn" private=false pushed_at="2011/05/05 10:48:57 -0700" size=1804 url="https://github.com/pengwynn/octokit" watchers=92>
|
40
42
|
|
41
43
|
Authenticated requests
|
42
44
|
----------------------
|
@@ -59,7 +61,7 @@ Submitting a Pull Request
|
|
59
61
|
|
60
62
|
Inspiration
|
61
63
|
-----------
|
62
|
-
Octokit was inspired by [Octopi](
|
64
|
+
Octokit was inspired by [Octopi](https://github.com/fcoury/octopi) and aims to be a lightweight, less-ActiveResourcey alternative.
|
63
65
|
|
64
66
|
Copyright
|
65
67
|
---------
|
data/Rakefile
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'faraday'
|
2
|
+
require 'multi_json'
|
2
3
|
|
3
4
|
# @api private
|
4
5
|
module Faraday
|
5
|
-
class Response::
|
6
|
+
class Response::RaiseOctokitError < Response::Middleware
|
6
7
|
def on_complete(response)
|
7
8
|
case response[:status].to_i
|
8
9
|
when 400
|
@@ -15,6 +16,8 @@ module Faraday
|
|
15
16
|
raise Octokit::NotFound, error_message(response)
|
16
17
|
when 406
|
17
18
|
raise Octokit::NotAcceptable, error_message(response)
|
19
|
+
when 422
|
20
|
+
raise Octokit::UnprocessableEntity, error_message(response)
|
18
21
|
when 500
|
19
22
|
raise Octokit::InternalServerError, error_message(response)
|
20
23
|
when 501
|
@@ -27,7 +30,13 @@ module Faraday
|
|
27
30
|
end
|
28
31
|
|
29
32
|
def error_message(response)
|
30
|
-
|
33
|
+
message = if body = response[:body]
|
34
|
+
body = ::MultiJson.decode(body) if body.is_a? String
|
35
|
+
": #{body[:error] || body[:message] || ''}"
|
36
|
+
else
|
37
|
+
''
|
38
|
+
end
|
39
|
+
"#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]}#{message}"
|
31
40
|
end
|
32
41
|
end
|
33
42
|
end
|
data/lib/octokit.rb
CHANGED
@@ -1,53 +1,25 @@
|
|
1
1
|
require 'octokit/configuration'
|
2
2
|
require 'octokit/client'
|
3
|
+
require 'octokit/error'
|
3
4
|
|
4
5
|
module Octokit
|
5
6
|
extend Configuration
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
7
|
+
class << self
|
8
|
+
# Alias for Octokit::Client.new
|
9
|
+
#
|
10
|
+
# @return [Octokit::Client]
|
11
|
+
def new(options={})
|
12
|
+
Octokit::Client.new(options)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Delegate to Octokit::Client.new
|
16
|
+
def method_missing(method, *args, &block)
|
17
|
+
return super unless new.respond_to?(method)
|
18
|
+
new.send(method, *args, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def respond_to?(method, include_private=false)
|
22
|
+
new.respond_to?(method, include_private) || super(method, include_private)
|
23
|
+
end
|
22
24
|
end
|
23
|
-
|
24
|
-
# Custom error class for rescuing from all GitHub errors
|
25
|
-
class Error < StandardError; end
|
26
|
-
|
27
|
-
# Raised when GitHub returns a 400 HTTP status code
|
28
|
-
class BadRequest < Error; end
|
29
|
-
|
30
|
-
# Raised when GitHub returns a 401 HTTP status code
|
31
|
-
class Unauthorized < Error; end
|
32
|
-
|
33
|
-
# Raised when GitHub returns a 403 HTTP status code
|
34
|
-
class Forbidden < Error; end
|
35
|
-
|
36
|
-
# Raised when GitHub returns a 404 HTTP status code
|
37
|
-
class NotFound < Error; end
|
38
|
-
|
39
|
-
# Raised when GitHub returns a 406 HTTP status code
|
40
|
-
class NotAcceptable < Error; end
|
41
|
-
|
42
|
-
# Raised when GitHub returns a 500 HTTP status code
|
43
|
-
class InternalServerError < Error; end
|
44
|
-
|
45
|
-
# Raised when GitHub returns a 501 HTTP status code
|
46
|
-
class NotImplemented < Error; end
|
47
|
-
|
48
|
-
# Raised when GitHub returns a 502 HTTP status code
|
49
|
-
class BadGateway < Error; end
|
50
|
-
|
51
|
-
# Raised when GitHub returns a 503 HTTP status code
|
52
|
-
class ServiceUnavailable < Error; end
|
53
25
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Octokit
|
2
|
+
module Authentication
|
3
|
+
def authentication
|
4
|
+
if login && token
|
5
|
+
{:login => "#{login}/token", :password => token}
|
6
|
+
elsif login && password
|
7
|
+
{:login => login, :password => password}
|
8
|
+
else
|
9
|
+
{}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def authenticated?
|
14
|
+
!authentication.empty?
|
15
|
+
end
|
16
|
+
|
17
|
+
def oauthed?
|
18
|
+
!oauth_token.nil?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/octokit/client.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
|
+
require 'octokit/authentication'
|
2
|
+
require 'octokit/connection'
|
1
3
|
require 'octokit/repository'
|
2
|
-
require 'octokit/
|
3
|
-
|
4
|
-
require 'octokit/client/request'
|
4
|
+
require 'octokit/request'
|
5
|
+
|
5
6
|
require 'octokit/client/commits'
|
6
7
|
require 'octokit/client/issues'
|
7
8
|
require 'octokit/client/network'
|
9
|
+
require 'octokit/client/milestones'
|
8
10
|
require 'octokit/client/objects'
|
9
11
|
require 'octokit/client/organizations'
|
12
|
+
require 'octokit/client/pub_sub_hubbub'
|
13
|
+
require 'octokit/client/pub_sub_hubbub/service_hooks'
|
10
14
|
require 'octokit/client/pulls'
|
11
15
|
require 'octokit/client/repositories'
|
12
16
|
require 'octokit/client/timelines'
|
@@ -23,16 +27,19 @@ module Octokit
|
|
23
27
|
end
|
24
28
|
end
|
25
29
|
|
26
|
-
include Octokit::
|
27
|
-
include Octokit::
|
28
|
-
include Octokit::
|
30
|
+
include Octokit::Authentication
|
31
|
+
include Octokit::Connection
|
32
|
+
include Octokit::Request
|
29
33
|
|
30
34
|
include Octokit::Client::Commits
|
31
35
|
include Octokit::Client::Issues
|
32
36
|
include Octokit::Client::Network
|
37
|
+
include Octokit::Client::Milestones
|
33
38
|
include Octokit::Client::Objects
|
34
39
|
include Octokit::Client::Organizations
|
35
40
|
include Octokit::Client::Pulls
|
41
|
+
include Octokit::Client::PubSubHubbub
|
42
|
+
include Octokit::Client::PubSubHubbub::ServiceHooks
|
36
43
|
include Octokit::Client::Repositories
|
37
44
|
include Octokit::Client::Timelines
|
38
45
|
include Octokit::Client::Users
|
@@ -3,12 +3,12 @@ module Octokit
|
|
3
3
|
module Commits
|
4
4
|
|
5
5
|
def commits(repo, branch="master", options={})
|
6
|
-
get("api/v2/json/commits/list/#{Repository.new(repo)}/#{branch}", options)['commits']
|
6
|
+
get("/api/v2/json/commits/list/#{Repository.new(repo)}/#{branch}", options)['commits']
|
7
7
|
end
|
8
8
|
alias :list_commits :commits
|
9
9
|
|
10
10
|
def commit(repo, sha, options={})
|
11
|
-
get("api/v2/json/commits/show/#{Repository.new(repo)}/#{sha}", options)['
|
11
|
+
get("/api/v2/json/commits/show/#{Repository.new(repo)}/#{sha}", options)['commit']
|
12
12
|
end
|
13
13
|
|
14
14
|
end
|
@@ -2,58 +2,221 @@ module Octokit
|
|
2
2
|
class Client
|
3
3
|
module Issues
|
4
4
|
|
5
|
+
# Search issues within a repository
|
6
|
+
#
|
7
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
8
|
+
# @param search_term [String] The term to search for
|
9
|
+
# @param state [String] :state (open) <tt>open</tt> or <tt>closed</tt>.
|
10
|
+
# @return [Array] A list of issues matching the search term and state
|
11
|
+
# @see http://develop.github.com/p/issues.html
|
12
|
+
# @example Search for 'test' in the open issues for sferik/rails_admin
|
13
|
+
# Octokit.search_issues("sferik/rails_admin", 'test', 'open')
|
5
14
|
def search_issues(repo, search_term, state='open', options={})
|
6
|
-
get("api/v2/json/issues/search/#{Repository.new(repo)}/#{state}/#{search_term}", options)['issues']
|
15
|
+
get("/api/v2/json/issues/search/#{Repository.new(repo)}/#{state}/#{search_term}", options)['issues']
|
7
16
|
end
|
8
17
|
|
9
|
-
|
10
|
-
|
18
|
+
# List issues for a repository
|
19
|
+
#
|
20
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
21
|
+
# @param options [Hash] A customizable set of options.
|
22
|
+
# @option options [Integer] :milestone Milestone number.
|
23
|
+
# @option options [String] :state (open) State: <tt>open</tt> or <tt>closed</tt>.
|
24
|
+
# @option options [String] :assignee User login.
|
25
|
+
# @option options [String] :mentioned User login.
|
26
|
+
# @option options [String] :labels List of comma separated Label names. Example: <tt>bug,ui,@high</tt>.
|
27
|
+
# @option options [String] :sort (created) Sort: <tt>created</tt>, <tt>updated</tt>, or <tt>comments</tt>.
|
28
|
+
# @option options [String] :direction (desc) Direction: <tt>asc</tt> or <tt>desc</tt>.
|
29
|
+
# @option options [Integer] :page (1) Page number.
|
30
|
+
# @return [Array] A list of issues for a repository.
|
31
|
+
# @see http://developer.github.com/v3/issues/#list-issues-for-this-repository
|
32
|
+
# @example List issues for a repository
|
33
|
+
# Octokit.list_issues("sferik/rails_admin")
|
34
|
+
def list_issues(repository, options={})
|
35
|
+
get("/repos/#{Repository.new(repository)}/issues", options, 3)
|
11
36
|
end
|
12
37
|
alias :issues :list_issues
|
13
38
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
39
|
+
# Create an issue for a repository
|
40
|
+
#
|
41
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
42
|
+
# @param title [String] A descriptive title
|
43
|
+
# @param body [String] A concise description
|
44
|
+
# @return [Issue] Your newly created issue
|
45
|
+
# @see http://develop.github.com/p/issues.html
|
46
|
+
# @example Create a new Issues for a repository
|
47
|
+
# Octokit.create_issue("sferik/rails_admin")
|
18
48
|
def create_issue(repo, title, body, options={})
|
19
|
-
post("api/v2/json/issues/open/#{Repository.new(repo)}", options.merge({:title => title, :body => body}))['issue']
|
49
|
+
post("/api/v2/json/issues/open/#{Repository.new(repo)}", options.merge({:title => title, :body => body}))['issue']
|
20
50
|
end
|
21
51
|
alias :open_issue :create_issue
|
22
52
|
|
53
|
+
# Get a single issue from a repository
|
54
|
+
#
|
55
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
56
|
+
# @param number [String] Number ID of the issue
|
57
|
+
# @return [Issue] The issue you requested, if it exists
|
58
|
+
# @see http://developer.github.com/v3/issues/#get-a-single-issue
|
59
|
+
# @example Get issue #25 from pengwynn/octokit
|
60
|
+
# Octokit.issue("pengwynn/octokit", "25")
|
23
61
|
def issue(repo, number, options={})
|
24
|
-
get("api/v2/json/issues/show/#{Repository.new(repo)}/#{number}", options)['issue']
|
25
|
-
end
|
26
|
-
|
27
|
-
def issue_comments(repo, number, options={})
|
28
|
-
get("api/v2/json/issues/comments/#{Repository.new(repo)}/#{number}", options)['comments']
|
62
|
+
get("/api/v2/json/issues/show/#{Repository.new(repo)}/#{number}", options)['issue']
|
29
63
|
end
|
30
64
|
|
65
|
+
# Close an issue
|
66
|
+
#
|
67
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
68
|
+
# @param number [String] Number ID of the issue
|
69
|
+
# @return [Issue] The updated Issue
|
70
|
+
# @see http://develop.github.com/p/issues.html
|
71
|
+
# @note This implementation needs to be adjusted with switch to API v3
|
72
|
+
# @see http://developer.github.com/v3/issues/#edit-an-issue
|
73
|
+
# @example Close Issue #25 from pengwynn/octokit
|
74
|
+
# Octokit.close_issue("pengwynn/octokit", "25")
|
31
75
|
def close_issue(repo, number, options={})
|
32
|
-
post("api/v2/json/issues/close/#{Repository.new(repo)}/#{number}", options)['issue']
|
76
|
+
post("/api/v2/json/issues/close/#{Repository.new(repo)}/#{number}", options)['issue']
|
33
77
|
end
|
34
78
|
|
79
|
+
# Reopen an issue
|
80
|
+
#
|
81
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
82
|
+
# @param number [String] Number ID of the issue
|
83
|
+
# @return [Issue] The updated Issue
|
84
|
+
# @see http://develop.github.com/p/issues.html
|
85
|
+
# @note This implementation needs to be adjusted with switch to API v3
|
86
|
+
# @see http://developer.github.com/v3/issues/#edit-an-issue
|
87
|
+
# @example Reopen Issue #25 from pengwynn/octokit
|
88
|
+
# Octokit.reopen_issue("pengwynn/octokit", "25")
|
35
89
|
def reopen_issue(repo, number, options={})
|
36
|
-
post("api/v2/json/issues/reopen/#{Repository.new(repo)}/#{number}", options)['issue']
|
90
|
+
post("/api/v2/json/issues/reopen/#{Repository.new(repo)}/#{number}", options)['issue']
|
37
91
|
end
|
38
92
|
|
93
|
+
# Update an issue
|
94
|
+
#
|
95
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
96
|
+
# @param number [String] Number ID of the issue
|
97
|
+
# @param title [String] Updated title for the issue
|
98
|
+
# @param body [String] Updated body of the issue
|
99
|
+
# @return [Issue] The updated Issue
|
100
|
+
# @see http://develop.github.com/p/issues.html
|
101
|
+
# @note This implementation needs to be adjusted with switch to API v3
|
102
|
+
# @see http://developer.github.com/v3/issues/#edit-an-issue
|
103
|
+
# @example Change the title of Issue #25
|
104
|
+
# Octokit.update_issue("pengwynn/octokit", "25", "A new title", "the same body"")
|
39
105
|
def update_issue(repo, number, title, body, options={})
|
40
|
-
post("api/v2/json/issues/edit/#{Repository.new(repo)}/#{number}", options.merge({:title => title, :body => body}))['issue']
|
106
|
+
post("/api/v2/json/issues/edit/#{Repository.new(repo)}/#{number}", options.merge({:title => title, :body => body}))['issue']
|
41
107
|
end
|
42
108
|
|
109
|
+
# List available labels for a repository
|
110
|
+
#
|
111
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
112
|
+
# @return [Array] A list of the labels currently on the issue
|
113
|
+
# @see http://develop.github.com/p/issues.html
|
114
|
+
# @see http://developer.github.com/v3/issues/labels/
|
115
|
+
# @example List labels for pengwynn/octokit
|
116
|
+
# Octokit.labels("pengwynn/octokit")
|
43
117
|
def labels(repo, options={})
|
44
|
-
get("
|
118
|
+
get("repos/#{Repository.new(repo)}/labels", options, 3)
|
45
119
|
end
|
46
120
|
|
47
|
-
|
48
|
-
|
121
|
+
# Get single label for a repository
|
122
|
+
#
|
123
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
124
|
+
# @param name [String] Name of the label
|
125
|
+
# @return [Label] A single label from the repository
|
126
|
+
# @see http://developer.github.com/v3/issues/labels/#get-a-single-label
|
127
|
+
# @example Get the "V3 Addition" label from pengwynn/octokit
|
128
|
+
# Octokit.labels("pengwynn/octokit")
|
129
|
+
def label(repo, name, options={})
|
130
|
+
get("repos/#{Repository.new(repo)}/labels/#{URI.encode(name)}", options, 3)
|
131
|
+
end
|
132
|
+
# Add a label to a repository
|
133
|
+
#
|
134
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
135
|
+
# @param label [String] A new label
|
136
|
+
# @param color [String] A color, in hex, without the leading #
|
137
|
+
# @return [Array] A list of the labels currently on the issue
|
138
|
+
# @see http://developer.github.com/v3/issues/labels/
|
139
|
+
# @example Add a new label "Version 1.0" with color "#cccccc"
|
140
|
+
# Octokit.add_label("pengwynn/octokit", "Version 1.0", "cccccc")
|
141
|
+
def add_label(repo, label, color="ffffff", options={})
|
142
|
+
post("repos/#{Repository.new(repo)}/labels", options.merge({:name => label, :color => color}), 3)
|
49
143
|
end
|
50
144
|
|
145
|
+
# Remove a label from a repository
|
146
|
+
#
|
147
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
148
|
+
# @param label [String] Label you wish to remove
|
149
|
+
# @param number [Integer] Optional Issue number to remove the label from
|
150
|
+
# @note Leaving the number parameter out will remove this label from all issues
|
151
|
+
# @return [Array] A list of the labels currently on the issue
|
152
|
+
# @see http://develop.github.com/p/issues.html
|
153
|
+
# @see http://developer.github.com/v3/issues/labels/
|
154
|
+
# @example Remove the label "Version 1.0" from the repository
|
155
|
+
# Octokit.remove_label("pengwynn/octokit", "Version 1.0")
|
51
156
|
def remove_label(repo, label, number=nil, options={})
|
52
|
-
post(["api/v2/json/issues/label/remove/#{Repository.new(repo)}/#{label}", number].compact.join('/'), options)['labels']
|
157
|
+
post(["/api/v2/json/issues/label/remove/#{Repository.new(repo)}/#{label}", number].compact.join('/'), options)['labels']
|
53
158
|
end
|
54
159
|
|
160
|
+
# Get all comments attached to an issue
|
161
|
+
#
|
162
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
163
|
+
# @param number [String] Number ID of the issue
|
164
|
+
# @return [Array] Array of comments that belong to an issue
|
165
|
+
# @see http://developer.github.com/v3/issues/comments
|
166
|
+
# @example Get comments for issue #25 from pengwynn/octokit
|
167
|
+
# Octokit.issue_comments("pengwynn/octokit", "25")
|
168
|
+
def issue_comments(repo, number, options={})
|
169
|
+
get("/repos/#{Repository.new(repo)}/issues/#{number}/comments", options, 3)
|
170
|
+
end
|
171
|
+
|
172
|
+
# Get a single comment attached to an issue
|
173
|
+
#
|
174
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
175
|
+
# @param number [String] Number ID of the issue
|
176
|
+
# @return [Array] Array of comments that belong to an issue
|
177
|
+
# @see http://developer.github.com/v3/issues/comments/#get-a-single-comment
|
178
|
+
# @example Get comments for issue #25 from pengwynn/octokit
|
179
|
+
# Octokit.issue_comments("pengwynn/octokit", "25")
|
180
|
+
def issue_comment(repo, number, options={})
|
181
|
+
get("/repos/#{Repository.new(repo)}/issues/comments/#{number}", options, 3)
|
182
|
+
end
|
183
|
+
|
184
|
+
# Add a comment to an issue
|
185
|
+
#
|
186
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
187
|
+
# @param number [Integer] Issue number
|
188
|
+
# @param comment [String] Comment to be added
|
189
|
+
# @return [Comment] A JSON encoded Comment
|
190
|
+
# @see http://developer.github.com/v3/issues/comments/#create-a-comment
|
191
|
+
# @example Add the comment "Almost to v1" to Issue #23 on pengwynn/octokit
|
192
|
+
# Octokit.add_comment("pengwynn/octokit", 23, "Almost to v1")
|
55
193
|
def add_comment(repo, number, comment, options={})
|
56
|
-
post("
|
194
|
+
post("/repos/#{Repository.new(repo)}/issues/#{number}/comments", options.merge({:body => comment}), 3)
|
195
|
+
end
|
196
|
+
|
197
|
+
# Update a single comment on an issue
|
198
|
+
#
|
199
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
200
|
+
# @param number [Integer] Comment number
|
201
|
+
# @param comment [String] Body of the comment which will replace the existing body.
|
202
|
+
# @return [Comment] A JSON encoded Comment
|
203
|
+
# @see http://developer.github.com/v3/issues/comments/#edit-a-comment
|
204
|
+
# @example Update the comment "I've started this on my 25-issue-comments-v3 fork" on Issue #25 on pengwynn/octokit
|
205
|
+
# Octokit.update_comment("pengwynn/octokit", 25, "Almost to v1, added this on my fork")
|
206
|
+
def update_comment(repo, number, comment, options={})
|
207
|
+
post("/repos/#{Repository.new(repo)}/issues/comments/#{number}", options.merge({:body => comment}), 3)
|
208
|
+
end
|
209
|
+
|
210
|
+
# Delete a single comment
|
211
|
+
#
|
212
|
+
# @param repository [String, Repository, Hash] A GitHub repository.
|
213
|
+
# @param number [Integer] Comment number
|
214
|
+
# @return [Response] A response object with status
|
215
|
+
# @see http://developer.github.com/v3/issues/comments/#delete-a-comment
|
216
|
+
# @example Delete the comment "I've started this on my 25-issue-comments-v3 fork" on Issue #25 on pengwynn/octokit
|
217
|
+
# Octokit.delete_comment("pengwynn/octokit", 1194549)
|
218
|
+
def delete_comment(repo, number, options={})
|
219
|
+
delete("/repos/#{Repository.new(repo)}/issues/comments/#{number}", options, 3, true, true)
|
57
220
|
end
|
58
221
|
end
|
59
222
|
end
|