lingfennan-github_api 0.18.2
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.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +741 -0
- data/lib/github_api.rb +93 -0
- data/lib/github_api/api.rb +398 -0
- data/lib/github_api/api/actions.rb +60 -0
- data/lib/github_api/api/arguments.rb +253 -0
- data/lib/github_api/api/config.rb +105 -0
- data/lib/github_api/api/config/property.rb +30 -0
- data/lib/github_api/api/config/property_set.rb +120 -0
- data/lib/github_api/api/factory.rb +33 -0
- data/lib/github_api/authorization.rb +75 -0
- data/lib/github_api/client.rb +77 -0
- data/lib/github_api/client/activity.rb +31 -0
- data/lib/github_api/client/activity/events.rb +233 -0
- data/lib/github_api/client/activity/feeds.rb +50 -0
- data/lib/github_api/client/activity/notifications.rb +181 -0
- data/lib/github_api/client/activity/starring.rb +130 -0
- data/lib/github_api/client/activity/watching.rb +176 -0
- data/lib/github_api/client/authorizations.rb +142 -0
- data/lib/github_api/client/authorizations/app.rb +98 -0
- data/lib/github_api/client/emojis.rb +19 -0
- data/lib/github_api/client/gists.rb +289 -0
- data/lib/github_api/client/gists/comments.rb +100 -0
- data/lib/github_api/client/git_data.rb +31 -0
- data/lib/github_api/client/git_data/blobs.rb +51 -0
- data/lib/github_api/client/git_data/commits.rb +101 -0
- data/lib/github_api/client/git_data/references.rb +150 -0
- data/lib/github_api/client/git_data/tags.rb +95 -0
- data/lib/github_api/client/git_data/trees.rb +113 -0
- data/lib/github_api/client/gitignore.rb +57 -0
- data/lib/github_api/client/issues.rb +248 -0
- data/lib/github_api/client/issues/assignees.rb +77 -0
- data/lib/github_api/client/issues/comments.rb +146 -0
- data/lib/github_api/client/issues/events.rb +50 -0
- data/lib/github_api/client/issues/labels.rb +189 -0
- data/lib/github_api/client/issues/milestones.rb +146 -0
- data/lib/github_api/client/markdown.rb +62 -0
- data/lib/github_api/client/meta.rb +19 -0
- data/lib/github_api/client/orgs.rb +127 -0
- data/lib/github_api/client/orgs/hooks.rb +182 -0
- data/lib/github_api/client/orgs/members.rb +142 -0
- data/lib/github_api/client/orgs/memberships.rb +131 -0
- data/lib/github_api/client/orgs/projects.rb +57 -0
- data/lib/github_api/client/orgs/teams.rb +407 -0
- data/lib/github_api/client/projects.rb +83 -0
- data/lib/github_api/client/projects/cards.rb +158 -0
- data/lib/github_api/client/projects/columns.rb +146 -0
- data/lib/github_api/client/pull_requests.rb +195 -0
- data/lib/github_api/client/pull_requests/comments.rb +140 -0
- data/lib/github_api/client/pull_requests/reviews.rb +158 -0
- data/lib/github_api/client/repos.rb +468 -0
- data/lib/github_api/client/repos/branches.rb +48 -0
- data/lib/github_api/client/repos/branches/protections.rb +75 -0
- data/lib/github_api/client/repos/collaborators.rb +84 -0
- data/lib/github_api/client/repos/comments.rb +125 -0
- data/lib/github_api/client/repos/commits.rb +80 -0
- data/lib/github_api/client/repos/contents.rb +246 -0
- data/lib/github_api/client/repos/deployments.rb +138 -0
- data/lib/github_api/client/repos/downloads.rb +62 -0
- data/lib/github_api/client/repos/forks.rb +48 -0
- data/lib/github_api/client/repos/hooks.rb +214 -0
- data/lib/github_api/client/repos/keys.rb +104 -0
- data/lib/github_api/client/repos/merging.rb +47 -0
- data/lib/github_api/client/repos/pages.rb +48 -0
- data/lib/github_api/client/repos/projects.rb +62 -0
- data/lib/github_api/client/repos/pub_sub_hubbub.rb +133 -0
- data/lib/github_api/client/repos/releases.rb +189 -0
- data/lib/github_api/client/repos/releases/assets.rb +136 -0
- data/lib/github_api/client/repos/releases/tags.rb +24 -0
- data/lib/github_api/client/repos/statistics.rb +89 -0
- data/lib/github_api/client/repos/statuses.rb +91 -0
- data/lib/github_api/client/say.rb +25 -0
- data/lib/github_api/client/scopes.rb +46 -0
- data/lib/github_api/client/search.rb +133 -0
- data/lib/github_api/client/search/legacy.rb +111 -0
- data/lib/github_api/client/users.rb +117 -0
- data/lib/github_api/client/users/emails.rb +65 -0
- data/lib/github_api/client/users/followers.rb +115 -0
- data/lib/github_api/client/users/keys.rb +104 -0
- data/lib/github_api/configuration.rb +70 -0
- data/lib/github_api/connection.rb +82 -0
- data/lib/github_api/constants.rb +61 -0
- data/lib/github_api/core_ext/array.rb +25 -0
- data/lib/github_api/core_ext/hash.rb +91 -0
- data/lib/github_api/core_ext/ordered_hash.rb +107 -0
- data/lib/github_api/deprecation.rb +39 -0
- data/lib/github_api/error.rb +32 -0
- data/lib/github_api/error/client_error.rb +89 -0
- data/lib/github_api/error/service_error.rb +223 -0
- data/lib/github_api/ext/faraday.rb +38 -0
- data/lib/github_api/mash.rb +7 -0
- data/lib/github_api/middleware.rb +37 -0
- data/lib/github_api/mime_type.rb +33 -0
- data/lib/github_api/normalizer.rb +23 -0
- data/lib/github_api/null_encoder.rb +25 -0
- data/lib/github_api/page_iterator.rb +138 -0
- data/lib/github_api/page_links.rb +63 -0
- data/lib/github_api/paged_request.rb +42 -0
- data/lib/github_api/pagination.rb +115 -0
- data/lib/github_api/parameter_filter.rb +35 -0
- data/lib/github_api/params_hash.rb +115 -0
- data/lib/github_api/rate_limit.rb +25 -0
- data/lib/github_api/request.rb +85 -0
- data/lib/github_api/request/basic_auth.rb +36 -0
- data/lib/github_api/request/jsonize.rb +54 -0
- data/lib/github_api/request/oauth2.rb +44 -0
- data/lib/github_api/request/verbs.rb +63 -0
- data/lib/github_api/response.rb +48 -0
- data/lib/github_api/response/atom_parser.rb +22 -0
- data/lib/github_api/response/follow_redirects.rb +140 -0
- data/lib/github_api/response/header.rb +87 -0
- data/lib/github_api/response/jsonize.rb +28 -0
- data/lib/github_api/response/mashify.rb +24 -0
- data/lib/github_api/response/raise_error.rb +22 -0
- data/lib/github_api/response/xmlize.rb +27 -0
- data/lib/github_api/response_wrapper.rb +161 -0
- data/lib/github_api/ssl_certs/cacerts.pem +2183 -0
- data/lib/github_api/utils/url.rb +63 -0
- data/lib/github_api/validations.rb +22 -0
- data/lib/github_api/validations/format.rb +26 -0
- data/lib/github_api/validations/presence.rb +32 -0
- data/lib/github_api/validations/required.rb +21 -0
- data/lib/github_api/validations/token.rb +41 -0
- data/lib/github_api/version.rb +5 -0
- metadata +338 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::PullRequests::Comments < API
|
|
7
|
+
# List comments on a pull request
|
|
8
|
+
#
|
|
9
|
+
# @example
|
|
10
|
+
# github = Github.new
|
|
11
|
+
# github.pull_requests.comments.list 'user-name', 'repo-name', number: 'id'
|
|
12
|
+
#
|
|
13
|
+
# List comments in a repository
|
|
14
|
+
#
|
|
15
|
+
# By default, Review Comments are ordered by ascending ID.
|
|
16
|
+
#
|
|
17
|
+
# @param [Hash] params
|
|
18
|
+
# @input params [String] :sort
|
|
19
|
+
# Optional string. Can be either created or updated. Default: created
|
|
20
|
+
# @input params [String] :direction
|
|
21
|
+
# Optional string. Can be either asc or desc. Ignored without sort parameter
|
|
22
|
+
# @input params [String] :since
|
|
23
|
+
# Optional string of a timestamp in ISO 8601
|
|
24
|
+
# format: YYYY-MM-DDTHH:MM:SSZ
|
|
25
|
+
# @example
|
|
26
|
+
# github = Github.new
|
|
27
|
+
# github.pull_requests.comments.list 'user-name', 'repo-name'
|
|
28
|
+
# github.pull_requests.comments.list 'user-name', 'repo-name' { |comm| ... }
|
|
29
|
+
#
|
|
30
|
+
# @api public
|
|
31
|
+
def list(*args)
|
|
32
|
+
arguments(args, required: [:user, :repo])
|
|
33
|
+
params = arguments.params
|
|
34
|
+
user = arguments.user
|
|
35
|
+
repo = arguments.repo
|
|
36
|
+
|
|
37
|
+
response = if (number = params.delete('number'))
|
|
38
|
+
get_request("/repos/#{user}/#{repo}/pulls/#{number}/comments", params)
|
|
39
|
+
else
|
|
40
|
+
get_request("/repos/#{user}/#{repo}/pulls/comments", params)
|
|
41
|
+
end
|
|
42
|
+
return response unless block_given?
|
|
43
|
+
response.each { |el| yield el }
|
|
44
|
+
end
|
|
45
|
+
alias_method :all, :list
|
|
46
|
+
|
|
47
|
+
# Get a single comment for pull requests
|
|
48
|
+
#
|
|
49
|
+
# @example
|
|
50
|
+
# github = Github.new
|
|
51
|
+
# github.pull_requests.comments.get 'user-name', 'repo-name', 'number'
|
|
52
|
+
#
|
|
53
|
+
# @example
|
|
54
|
+
# github.pull_requests.comments.get
|
|
55
|
+
# user: 'user-name',
|
|
56
|
+
# repo: 'repo-name',
|
|
57
|
+
# number: 'comment-number
|
|
58
|
+
#
|
|
59
|
+
# @api public
|
|
60
|
+
def get(*args)
|
|
61
|
+
arguments(args, required: [:user, :repo, :number])
|
|
62
|
+
|
|
63
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/comments", arguments.params)
|
|
64
|
+
end
|
|
65
|
+
alias_method :find, :get
|
|
66
|
+
|
|
67
|
+
# Create a pull request comment
|
|
68
|
+
#
|
|
69
|
+
# @param [Hash] params
|
|
70
|
+
# @option params [String] :body
|
|
71
|
+
# Required string. The text of the comment.
|
|
72
|
+
# @option params [String] :commit_id
|
|
73
|
+
# Required string - The SHA of the commit to comment on.
|
|
74
|
+
# @option params [String] :path
|
|
75
|
+
# Required string. The relative path of the file to comment on.
|
|
76
|
+
# @option params [Number] :position
|
|
77
|
+
# Required number. The line index in the diff to comment on.
|
|
78
|
+
#
|
|
79
|
+
# @example
|
|
80
|
+
# github = Github.new
|
|
81
|
+
# github.pull_requests.comments.create 'user-name', 'repo-name', 'number',
|
|
82
|
+
# body: "Nice change",
|
|
83
|
+
# commit_id: "6dcb09b5b57875f334f61aebed695e2e4193db5e",
|
|
84
|
+
# path: "file1.txt",
|
|
85
|
+
# position: 4
|
|
86
|
+
#
|
|
87
|
+
# Alternative Inputs
|
|
88
|
+
#
|
|
89
|
+
# Instead of passing commit_id, path, and position you can reply to
|
|
90
|
+
# an existing Pull Request Comment like this
|
|
91
|
+
# @option params [String] :body
|
|
92
|
+
# Required string. The text of the comment.
|
|
93
|
+
# @option params [Number] :in_reply_to
|
|
94
|
+
# Required number. The comment id to reply to.
|
|
95
|
+
#
|
|
96
|
+
# @example
|
|
97
|
+
# github = Github.new
|
|
98
|
+
# github.pull_requests.comments.create 'user-name','repo-name', 'number',
|
|
99
|
+
# body: "Nice change",
|
|
100
|
+
# in_reply_to: 4
|
|
101
|
+
#
|
|
102
|
+
# @api public
|
|
103
|
+
def create(*args)
|
|
104
|
+
arguments(args, required: [:user, :repo, :number])
|
|
105
|
+
|
|
106
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/comments", arguments.params)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# Edit a pull request comment
|
|
110
|
+
#
|
|
111
|
+
# @param [Hash] params
|
|
112
|
+
# @option params [String] :body
|
|
113
|
+
# Required string. The text of the comment.
|
|
114
|
+
#
|
|
115
|
+
# @example
|
|
116
|
+
# github = Github.new
|
|
117
|
+
# github.pull_requests.comments.edit 'user-name', 'repo-name', 'number',
|
|
118
|
+
# body: "Nice change"
|
|
119
|
+
#
|
|
120
|
+
# @api public
|
|
121
|
+
def edit(*args)
|
|
122
|
+
arguments(args, required: [:user, :repo, :number])
|
|
123
|
+
|
|
124
|
+
patch_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/comments/#{arguments.number}", arguments.params)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Delete a pull request comment
|
|
128
|
+
#
|
|
129
|
+
# @example
|
|
130
|
+
# github = Github.new
|
|
131
|
+
# github.pull_requests.comments.delete 'user-name', 'repo-name', 'number'
|
|
132
|
+
#
|
|
133
|
+
# @api public
|
|
134
|
+
def delete(*args)
|
|
135
|
+
arguments(args, required: [:user, :repo, :number])
|
|
136
|
+
|
|
137
|
+
delete_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/comments/#{arguments.number}", arguments.params)
|
|
138
|
+
end
|
|
139
|
+
end # PullRequests::Comments
|
|
140
|
+
end # Github
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::PullRequests::Reviews < API
|
|
7
|
+
PREVIEW_MEDIA = "application/vnd.github.black-cat-preview+json".freeze # :nodoc:
|
|
8
|
+
|
|
9
|
+
# List reviews on a pull request
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# github = Github.new
|
|
13
|
+
# github.pull_requests.reviews.list 'user-name', 'repo-name', number: 'pull-request-number'
|
|
14
|
+
#
|
|
15
|
+
# List pull request reviews in a repository
|
|
16
|
+
#
|
|
17
|
+
# @example
|
|
18
|
+
# github = Github.new
|
|
19
|
+
# github.pull_requests.reviews.list 'user-name', 'repo-name', number: 'pull-request-number'
|
|
20
|
+
# github.pull_requests.reviews.list 'user-name', 'repo-name', number: 'pull-request-number' { |comm| ... }
|
|
21
|
+
#
|
|
22
|
+
# @api public
|
|
23
|
+
def list(*args)
|
|
24
|
+
arguments(args, required: [:user, :repo, :number])
|
|
25
|
+
params = arguments.params
|
|
26
|
+
|
|
27
|
+
params["accept"] ||= PREVIEW_MEDIA
|
|
28
|
+
|
|
29
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/reviews", params)
|
|
30
|
+
return response unless block_given?
|
|
31
|
+
response.each { |el| yield el }
|
|
32
|
+
end
|
|
33
|
+
alias_method :all, :list
|
|
34
|
+
|
|
35
|
+
# Get a single review for pull requests
|
|
36
|
+
#
|
|
37
|
+
# @example
|
|
38
|
+
# github = Github.new
|
|
39
|
+
# github.pull_requests.reviews.get 'user-name', 'repo-name', 'number', 'id'
|
|
40
|
+
#
|
|
41
|
+
# @example
|
|
42
|
+
# github.pull_requests.reviews.get
|
|
43
|
+
# user: 'user-name',
|
|
44
|
+
# repo: 'repo-name',
|
|
45
|
+
# number: 1,
|
|
46
|
+
# id: 80
|
|
47
|
+
#
|
|
48
|
+
# @api public
|
|
49
|
+
def get(*args)
|
|
50
|
+
arguments(args, required: [:user, :repo, :number, :id])
|
|
51
|
+
|
|
52
|
+
params = arguments.params
|
|
53
|
+
params["accept"] ||= PREVIEW_MEDIA
|
|
54
|
+
|
|
55
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/reviews/#{arguments.id}", params)
|
|
56
|
+
end
|
|
57
|
+
alias_method :find, :get
|
|
58
|
+
|
|
59
|
+
# Create a pull request review
|
|
60
|
+
#
|
|
61
|
+
# @param [Hash] params
|
|
62
|
+
# @option params [String] :event
|
|
63
|
+
# Required string - The review action (event) to perform; can be one of
|
|
64
|
+
# APPROVE, REQUEST_CHANGES, or COMMENT. If left blank, the API returns
|
|
65
|
+
# HTTP 422 (Unrecognizable entity) and the review is left PENDING
|
|
66
|
+
# @option params [String] :body
|
|
67
|
+
# Optional string. The text of the review.
|
|
68
|
+
# @option params [Array] :comments
|
|
69
|
+
# Optional array of draft review comment objects. An array of comments
|
|
70
|
+
# part of the review.
|
|
71
|
+
#
|
|
72
|
+
# @example
|
|
73
|
+
# github = Github.new
|
|
74
|
+
# github.pull_requests.reviews.create 'user-name', 'repo-name', 'number',
|
|
75
|
+
# body: "Nice change",
|
|
76
|
+
# event: "APPROVE",
|
|
77
|
+
# comments: [
|
|
78
|
+
# {
|
|
79
|
+
# path: 'path/to/file/commented/on',
|
|
80
|
+
# position: 10,
|
|
81
|
+
# body: 'This looks good.'
|
|
82
|
+
# }
|
|
83
|
+
# ]
|
|
84
|
+
#
|
|
85
|
+
# @api public
|
|
86
|
+
def create(*args)
|
|
87
|
+
arguments(args, required: [:user, :repo, :number])
|
|
88
|
+
|
|
89
|
+
params = arguments.params
|
|
90
|
+
params["accept"] ||= PREVIEW_MEDIA
|
|
91
|
+
|
|
92
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/reviews", params)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Update a pull request review
|
|
96
|
+
#
|
|
97
|
+
# @param [Hash] params
|
|
98
|
+
# @option params [String] :state
|
|
99
|
+
# Required string - The review action (event) to perform; can be one of
|
|
100
|
+
# APPROVE, REQUEST_CHANGES, or COMMENT. If left blank, the API returns
|
|
101
|
+
# HTTP 422 (Unrecognizable entity) and the review is left PENDING
|
|
102
|
+
# @optoin params [String] :body
|
|
103
|
+
# Optional string
|
|
104
|
+
#
|
|
105
|
+
# @example
|
|
106
|
+
# github = Github.new oauth_token: '...'
|
|
107
|
+
# github.pull_requests.reviews.update 'user-name', 'repo-name', 'number', 'review-id'
|
|
108
|
+
# body: "Update body",
|
|
109
|
+
# event: "APPROVE"
|
|
110
|
+
#
|
|
111
|
+
# @api public
|
|
112
|
+
def update(*args)
|
|
113
|
+
arguments(args, required: [:user, :repo, :number, :id])
|
|
114
|
+
params = arguments.params
|
|
115
|
+
|
|
116
|
+
params["accept"] ||= PREVIEW_MEDIA
|
|
117
|
+
|
|
118
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/reviews/#{arguments.id}/events", params)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# @option params [String] :message
|
|
122
|
+
# Optional string - Reason for dismissal
|
|
123
|
+
#
|
|
124
|
+
# @example
|
|
125
|
+
# github = Github.new oauth_token: '...'
|
|
126
|
+
# github.pull_requests.reviews.dismiss 'user-name', 'repo-name', 'number', 'review-id'
|
|
127
|
+
# message: "I can't get to this right now."
|
|
128
|
+
#
|
|
129
|
+
# @api public
|
|
130
|
+
def dismiss(*args)
|
|
131
|
+
arguments(args, required: [:user, :repo, :number, :id])
|
|
132
|
+
params = arguments.params
|
|
133
|
+
|
|
134
|
+
params["accept"] ||= PREVIEW_MEDIA
|
|
135
|
+
|
|
136
|
+
put_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/reviews/#{arguments.id}/dismissals", params)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# List comments on a pull request review
|
|
140
|
+
#
|
|
141
|
+
# @example
|
|
142
|
+
# github = Github.new
|
|
143
|
+
# github.pull_requests.revieiws.comments 'user-name', 'repo-name', 'number', 'review-id'
|
|
144
|
+
#
|
|
145
|
+
# @api public
|
|
146
|
+
def comments(*args)
|
|
147
|
+
arguments(args, required: [:user, :repo, :number, :id])
|
|
148
|
+
params = arguments.params
|
|
149
|
+
|
|
150
|
+
params["accept"] ||= PREVIEW_MEDIA
|
|
151
|
+
|
|
152
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/pulls/#{arguments.number}/reviews/#{arguments.id}/comments", params)
|
|
153
|
+
return response unless block_given?
|
|
154
|
+
response.each { |el| yield el }
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::Repos < API
|
|
7
|
+
# Load all the modules after initializing Repos to avoid superclass mismatch
|
|
8
|
+
require_all 'github_api/client/repos',
|
|
9
|
+
'branches',
|
|
10
|
+
'collaborators',
|
|
11
|
+
'comments',
|
|
12
|
+
'commits',
|
|
13
|
+
'contents',
|
|
14
|
+
'deployments',
|
|
15
|
+
'downloads',
|
|
16
|
+
'forks',
|
|
17
|
+
'hooks',
|
|
18
|
+
'keys',
|
|
19
|
+
'merging',
|
|
20
|
+
'pages',
|
|
21
|
+
'projects',
|
|
22
|
+
'pub_sub_hubbub',
|
|
23
|
+
'releases',
|
|
24
|
+
'statistics',
|
|
25
|
+
'statuses'
|
|
26
|
+
|
|
27
|
+
REQUIRED_REPO_OPTIONS = %w[ name ]
|
|
28
|
+
|
|
29
|
+
VALID_REPO_OPTIONS = %w[
|
|
30
|
+
name
|
|
31
|
+
description
|
|
32
|
+
homepage
|
|
33
|
+
private
|
|
34
|
+
has_issues
|
|
35
|
+
has_wiki
|
|
36
|
+
has_downloads
|
|
37
|
+
team_id
|
|
38
|
+
auto_init
|
|
39
|
+
gitignore_template
|
|
40
|
+
default_branch
|
|
41
|
+
].freeze
|
|
42
|
+
|
|
43
|
+
VALID_REPO_TYPES = %w[ all public private member ].freeze
|
|
44
|
+
|
|
45
|
+
# Access to Repos::Collaborators API
|
|
46
|
+
namespace :collaborators
|
|
47
|
+
|
|
48
|
+
# Access to Repos::Comments API
|
|
49
|
+
namespace :comments
|
|
50
|
+
|
|
51
|
+
# Access to Repos::Commits API
|
|
52
|
+
namespace :commits
|
|
53
|
+
|
|
54
|
+
# Access to Repos::Contents API
|
|
55
|
+
namespace :contents
|
|
56
|
+
|
|
57
|
+
# Access to Repos::Deployments API
|
|
58
|
+
namespace :deployments
|
|
59
|
+
|
|
60
|
+
# Access to Repos::Downloads API
|
|
61
|
+
namespace :downloads
|
|
62
|
+
|
|
63
|
+
# Access to Repos::Forks API
|
|
64
|
+
namespace :forks
|
|
65
|
+
|
|
66
|
+
# Access to Repos::Hooks API
|
|
67
|
+
namespace :hooks
|
|
68
|
+
|
|
69
|
+
# Access to Repos::Keys API
|
|
70
|
+
namespace :keys
|
|
71
|
+
|
|
72
|
+
# Access to Repos::Merging API
|
|
73
|
+
namespace :merging
|
|
74
|
+
|
|
75
|
+
# Access to Repos::Pages API
|
|
76
|
+
namespace :pages
|
|
77
|
+
|
|
78
|
+
# Access to Repos::Projects API
|
|
79
|
+
namespace :projects
|
|
80
|
+
|
|
81
|
+
# Access to Repos::PubSubHubbub API
|
|
82
|
+
namespace :pubsubhubbub, full_name: :pub_sub_hubbub
|
|
83
|
+
|
|
84
|
+
# Access to Repos::Releases API
|
|
85
|
+
namespace :releases
|
|
86
|
+
|
|
87
|
+
# Access to Repos::Statistics API
|
|
88
|
+
namespace :stats, full_name: :statistics
|
|
89
|
+
|
|
90
|
+
# Access to Repos::Statuses API
|
|
91
|
+
namespace :statuses
|
|
92
|
+
|
|
93
|
+
# Access to Repos::Branches API
|
|
94
|
+
namespace :branches
|
|
95
|
+
|
|
96
|
+
# List repositories for the authenticated user
|
|
97
|
+
#
|
|
98
|
+
# @example
|
|
99
|
+
# github = Github.new oauth_token: '...'
|
|
100
|
+
# github.repos.list
|
|
101
|
+
# github.repos.list { |repo| ... }
|
|
102
|
+
#
|
|
103
|
+
# List all repositories
|
|
104
|
+
#
|
|
105
|
+
# This provides a dump of every repository,
|
|
106
|
+
# in the order that they were created.
|
|
107
|
+
#
|
|
108
|
+
# @param [Hash] params
|
|
109
|
+
# @option params [Integer] :since
|
|
110
|
+
# the integer ID of the last Repository that you've seen.
|
|
111
|
+
#
|
|
112
|
+
# @example
|
|
113
|
+
# github = Github.new
|
|
114
|
+
# github.repos.list :every
|
|
115
|
+
# github.repos.list :every { |repo| ... }
|
|
116
|
+
#
|
|
117
|
+
# List public repositories for the specified user.
|
|
118
|
+
#
|
|
119
|
+
# @example
|
|
120
|
+
# github = Github.new
|
|
121
|
+
# github.repos.list user: 'user-name'
|
|
122
|
+
# github.repos.list user: 'user-name', { |repo| ... }
|
|
123
|
+
#
|
|
124
|
+
# List repositories for the specified organisation.
|
|
125
|
+
#
|
|
126
|
+
# @example
|
|
127
|
+
# github = Github.new
|
|
128
|
+
# github.repos.list org: 'org-name'
|
|
129
|
+
# github.repos.list org: 'org-name', { |repo| ... }
|
|
130
|
+
#
|
|
131
|
+
# @api public
|
|
132
|
+
def list(*args)
|
|
133
|
+
arguments(args) do
|
|
134
|
+
permit %w[ user org type sort direction since ]
|
|
135
|
+
end
|
|
136
|
+
params = arguments.params
|
|
137
|
+
unless params.symbolize_keys[:per_page]
|
|
138
|
+
params.merge!(Pagination.per_page_as_param(current_options[:per_page]))
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
response = if (user_name = params.delete('user') || user)
|
|
142
|
+
get_request("/users/#{user_name}/repos", params)
|
|
143
|
+
elsif (org_name = params.delete('org') || org)
|
|
144
|
+
get_request("/orgs/#{org_name}/repos", params)
|
|
145
|
+
elsif args.map(&:to_s).include?('every')
|
|
146
|
+
get_request('/repositories', params)
|
|
147
|
+
else
|
|
148
|
+
# For authenticated user
|
|
149
|
+
get_request('/user/repos', params)
|
|
150
|
+
end
|
|
151
|
+
return response unless block_given?
|
|
152
|
+
response.each { |el| yield el }
|
|
153
|
+
end
|
|
154
|
+
alias :all :list
|
|
155
|
+
|
|
156
|
+
# Get a repository
|
|
157
|
+
#
|
|
158
|
+
# @example
|
|
159
|
+
# github = Github.new
|
|
160
|
+
# github.repos.get 'user-name', 'repo-name'
|
|
161
|
+
# github.repos.get user: 'user-name', repo: 'repo-name'
|
|
162
|
+
# github.repos(user: 'user-name', repo: 'repo-name').get
|
|
163
|
+
#
|
|
164
|
+
def get(*args)
|
|
165
|
+
arguments(args, required: [:user, :repo])
|
|
166
|
+
|
|
167
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}", arguments.params)
|
|
168
|
+
end
|
|
169
|
+
alias :find :get
|
|
170
|
+
|
|
171
|
+
# Get a repository
|
|
172
|
+
#
|
|
173
|
+
# @example
|
|
174
|
+
# github = Github.new
|
|
175
|
+
# github.repos.get_by_id 'repo-id'
|
|
176
|
+
# github.repos.get_by_id id: 'repo-id'
|
|
177
|
+
# github.repos(id: 'repo-id').get_by_id
|
|
178
|
+
#
|
|
179
|
+
def get_by_id(*args)
|
|
180
|
+
arguments(args, required: [:id])
|
|
181
|
+
|
|
182
|
+
get_request("/repositories/#{arguments.id}", arguments.params)
|
|
183
|
+
end
|
|
184
|
+
alias :find_by_id :get_by_id
|
|
185
|
+
|
|
186
|
+
# Create a new repository for the autheticated user.
|
|
187
|
+
#
|
|
188
|
+
# @param [Hash] params
|
|
189
|
+
# @option params [String] :name
|
|
190
|
+
# Required string
|
|
191
|
+
# @option params [String] :description
|
|
192
|
+
# Optional string
|
|
193
|
+
# @option params [String] :homepage
|
|
194
|
+
# Optional string
|
|
195
|
+
# @option params [Boolean] :private
|
|
196
|
+
# Optional boolean - true to create a private repository,
|
|
197
|
+
# false to create a public one.
|
|
198
|
+
# @option params [Boolean] :has_issues
|
|
199
|
+
# Optional boolean - true to enable issues for this repository,
|
|
200
|
+
# false to disable them
|
|
201
|
+
# @option params [Boolean] :has_wiki
|
|
202
|
+
# Optional boolean - true to enable the wiki for this repository,
|
|
203
|
+
# false to disable it. Default is true
|
|
204
|
+
# @option params [Boolean] :has_downloads
|
|
205
|
+
# Optional boolean - true to enable downloads for this repository
|
|
206
|
+
# @option params [String] :org
|
|
207
|
+
# Optional string - The organisation in which this
|
|
208
|
+
# repository will be created
|
|
209
|
+
# @option params [Numeric] :team_id
|
|
210
|
+
# Optional number - The id of the team that will be granted
|
|
211
|
+
# access to this repository. This is only valid when creating
|
|
212
|
+
# a repo in an organization
|
|
213
|
+
# @option params [Boolean] :auto_init
|
|
214
|
+
# Optional boolean - true to create an initial commit with
|
|
215
|
+
# empty README. Default is false.
|
|
216
|
+
# @option params [String] :gitignore_template
|
|
217
|
+
# Optional string - Desired language or platform .gitignore
|
|
218
|
+
# template to apply. Use the name of the template without
|
|
219
|
+
# the extension. For example, “Haskell” Ignored if
|
|
220
|
+
# auto_init parameter is not provided.
|
|
221
|
+
#
|
|
222
|
+
# @example
|
|
223
|
+
# github = Github.new
|
|
224
|
+
# github.repos.create "name": 'repo-name'
|
|
225
|
+
# "description": "This is your first repo",
|
|
226
|
+
# "homepage": "https://github.com",
|
|
227
|
+
# "private": false,
|
|
228
|
+
# "has_issues": true,
|
|
229
|
+
# "has_wiki": true,
|
|
230
|
+
# "has_downloads": true
|
|
231
|
+
#
|
|
232
|
+
# Create a new repository in this organisation. The authenticated user
|
|
233
|
+
# must be a member of this organisation
|
|
234
|
+
#
|
|
235
|
+
# @example
|
|
236
|
+
# github = Github.new oauth_token: '...'
|
|
237
|
+
# github.repos.create name: 'repo-name', org: 'organisation-name'
|
|
238
|
+
#
|
|
239
|
+
# @example
|
|
240
|
+
def create(*args)
|
|
241
|
+
arguments(args) do
|
|
242
|
+
assert_required %w[ name ]
|
|
243
|
+
end
|
|
244
|
+
params = arguments.params
|
|
245
|
+
|
|
246
|
+
# Requires authenticated user
|
|
247
|
+
if (org = params.delete('org') || org)
|
|
248
|
+
post_request("/orgs/#{org}/repos", params)
|
|
249
|
+
else
|
|
250
|
+
post_request("/user/repos", params)
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Delete a repository
|
|
255
|
+
#
|
|
256
|
+
# Deleting a repository requires admin access.
|
|
257
|
+
# If OAuth is used, the delete_repo scope is required.
|
|
258
|
+
#
|
|
259
|
+
# @example
|
|
260
|
+
# github = Github.new oauth_token: '...'
|
|
261
|
+
# github.repos.delete 'user-name', 'repo-name'
|
|
262
|
+
#
|
|
263
|
+
# @api public
|
|
264
|
+
def delete(*args)
|
|
265
|
+
arguments(args, required: [:user, :repo])
|
|
266
|
+
|
|
267
|
+
delete_request("/repos/#{arguments.user}/#{arguments.repo}", arguments.params)
|
|
268
|
+
end
|
|
269
|
+
alias :remove :delete
|
|
270
|
+
|
|
271
|
+
# List contributors
|
|
272
|
+
#
|
|
273
|
+
# @param [Hash] params
|
|
274
|
+
# @option params [Boolean] :anon
|
|
275
|
+
# Optional flag. Set to 1 or true to include anonymous contributors.
|
|
276
|
+
#
|
|
277
|
+
# @examples
|
|
278
|
+
# github = Github.new
|
|
279
|
+
# github.repos.contributors 'user-name','repo-name'
|
|
280
|
+
# github.repos.contributors 'user-name','repo-name' { |cont| ... }
|
|
281
|
+
#
|
|
282
|
+
# @api public
|
|
283
|
+
def contributors(*args)
|
|
284
|
+
arguments(args, required: [:user, :repo]) do
|
|
285
|
+
permit %w[ anon ]
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/contributors", arguments.params)
|
|
289
|
+
return response unless block_given?
|
|
290
|
+
response.each { |el| yield el }
|
|
291
|
+
end
|
|
292
|
+
alias :list_contributors :contributors
|
|
293
|
+
alias :contribs :contributors
|
|
294
|
+
|
|
295
|
+
# Edit a repository
|
|
296
|
+
#
|
|
297
|
+
# @param [Hash] params
|
|
298
|
+
# @option params [String] :name
|
|
299
|
+
# Required string
|
|
300
|
+
# @option params [String] :description
|
|
301
|
+
# Optional string
|
|
302
|
+
# @option params [String] :homepage
|
|
303
|
+
# Optional string
|
|
304
|
+
# @option params [Boolean] :private
|
|
305
|
+
# Optional boolean, true to make this a private repository, false to make it a public one
|
|
306
|
+
# @option params [Boolean] :has_issues
|
|
307
|
+
# Optional boolean - true to enable issues for this repository,
|
|
308
|
+
# false to disable them
|
|
309
|
+
# @option params [Boolean] :has_wiki
|
|
310
|
+
# Optional boolean - true to enable the wiki for this repository,
|
|
311
|
+
# false to disable it. Default is true
|
|
312
|
+
# @option params [Boolean] :has_downloads
|
|
313
|
+
# Optional boolean - true to enable downloads for this repository
|
|
314
|
+
# @option params [String] :default_branch
|
|
315
|
+
# Optional string - Update the default branch for this repository.
|
|
316
|
+
#
|
|
317
|
+
# @example
|
|
318
|
+
# github = Github.new
|
|
319
|
+
# github.repos.edit 'user-name', 'repo-name',
|
|
320
|
+
# name: 'hello-world',
|
|
321
|
+
# description: 'This is your first repo',
|
|
322
|
+
# homepage: "https://github.com",
|
|
323
|
+
# public: true, has_issues: true
|
|
324
|
+
#
|
|
325
|
+
def edit(*args)
|
|
326
|
+
arguments(args, required: [:user, :repo]) do
|
|
327
|
+
permit VALID_REPO_OPTIONS
|
|
328
|
+
assert_required %w[ name ]
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
patch_request("/repos/#{arguments.user}/#{arguments.repo}", arguments.params)
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
# Delete a repository
|
|
335
|
+
#
|
|
336
|
+
# Deleting a repository requires admin access.
|
|
337
|
+
# If OAuth is used, the delete_repo scope is required.
|
|
338
|
+
#
|
|
339
|
+
# @example
|
|
340
|
+
# github = Github.new oauth_token: '...'
|
|
341
|
+
# github.repos.delete 'user-name', 'repo-name'
|
|
342
|
+
#
|
|
343
|
+
# @api public
|
|
344
|
+
def delete(*args)
|
|
345
|
+
arguments(args, required: [:user, :repo])
|
|
346
|
+
|
|
347
|
+
delete_request("/repos/#{arguments.user}/#{arguments.repo}", arguments.params)
|
|
348
|
+
end
|
|
349
|
+
alias :remove :delete
|
|
350
|
+
|
|
351
|
+
# List branches
|
|
352
|
+
#
|
|
353
|
+
# @example
|
|
354
|
+
# github = Github.new
|
|
355
|
+
# github.repos.branches 'user-name', 'repo-name'
|
|
356
|
+
# github.repos(user: 'user-name', repo: 'repo-name').branches
|
|
357
|
+
#
|
|
358
|
+
# @example
|
|
359
|
+
# repos = Github::Repos.new
|
|
360
|
+
# repos.branches 'user-name', 'repo-name'
|
|
361
|
+
#
|
|
362
|
+
# @api public
|
|
363
|
+
# def branches(*args)
|
|
364
|
+
# arguments(args, required: [:user, :repo])
|
|
365
|
+
|
|
366
|
+
# response = get_request("/repos/#{arguments.user}/#{arguments.repo}/branches", arguments.params)
|
|
367
|
+
# return response unless block_given?
|
|
368
|
+
# response.each { |el| yield el }
|
|
369
|
+
# end
|
|
370
|
+
# alias :list_branches :branches
|
|
371
|
+
|
|
372
|
+
# Get branch
|
|
373
|
+
#
|
|
374
|
+
# @example
|
|
375
|
+
# github = Github.new
|
|
376
|
+
# github.repos.branch 'user-name', 'repo-name', 'branch-name'
|
|
377
|
+
# github.repos.branch user: 'user-name', repo: 'repo-name', branch: 'branch-name'
|
|
378
|
+
# github.repos(user: 'user-name', repo: 'repo-name', branch: 'branch-name').branch
|
|
379
|
+
# @api public
|
|
380
|
+
# def branch(*args)
|
|
381
|
+
# arguments(args, required: [:user, :repo, :branch])
|
|
382
|
+
|
|
383
|
+
# get_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}", arguments.params)
|
|
384
|
+
# end
|
|
385
|
+
|
|
386
|
+
# List contributors
|
|
387
|
+
#
|
|
388
|
+
# @param [Hash] params
|
|
389
|
+
# @option params [Boolean] :anon
|
|
390
|
+
# Optional flag. Set to 1 or true to include anonymous contributors.
|
|
391
|
+
#
|
|
392
|
+
# @example
|
|
393
|
+
# github = Github.new
|
|
394
|
+
# github.repos.contributors 'user-name','repo-name'
|
|
395
|
+
# github.repos.contributors 'user-name','repo-name' { |cont| ... }
|
|
396
|
+
#
|
|
397
|
+
# @api public
|
|
398
|
+
def contributors(*args)
|
|
399
|
+
arguments(args, required: [:user, :repo]) do
|
|
400
|
+
permit ['anon']
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/contributors", arguments.params)
|
|
404
|
+
return response unless block_given?
|
|
405
|
+
response.each { |el| yield el }
|
|
406
|
+
end
|
|
407
|
+
alias :list_contributors :contributors
|
|
408
|
+
alias :contribs :contributors
|
|
409
|
+
|
|
410
|
+
# List languages
|
|
411
|
+
#
|
|
412
|
+
# @examples
|
|
413
|
+
# github = Github.new
|
|
414
|
+
# github.repos.languages 'user-name', 'repo-name'
|
|
415
|
+
# github.repos.languages 'user-name', 'repo-name' { |lang| ... }
|
|
416
|
+
#
|
|
417
|
+
# @api public
|
|
418
|
+
def languages(*args)
|
|
419
|
+
arguments(args, required: [:user, :repo])
|
|
420
|
+
|
|
421
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/languages", arguments.params)
|
|
422
|
+
return response unless block_given?
|
|
423
|
+
response.each { |el| yield el }
|
|
424
|
+
end
|
|
425
|
+
alias :list_languages :languages
|
|
426
|
+
|
|
427
|
+
# List tags
|
|
428
|
+
#
|
|
429
|
+
# @example
|
|
430
|
+
# github = Github.new
|
|
431
|
+
# github.repos.tags 'user-name', 'repo-name'
|
|
432
|
+
# github.repos.tags 'user-name', 'repo-name' { |tag| ... }
|
|
433
|
+
#
|
|
434
|
+
# @api public
|
|
435
|
+
def tags(*args)
|
|
436
|
+
arguments(args, required: [:user, :repo])
|
|
437
|
+
|
|
438
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/tags", arguments.params)
|
|
439
|
+
return response unless block_given?
|
|
440
|
+
response.each { |el| yield el }
|
|
441
|
+
end
|
|
442
|
+
alias :list_tags :tags
|
|
443
|
+
alias :repo_tags :tags
|
|
444
|
+
alias :repository_tags :tags
|
|
445
|
+
|
|
446
|
+
# List teams
|
|
447
|
+
#
|
|
448
|
+
# @example
|
|
449
|
+
# github = Github.new
|
|
450
|
+
# github.repos.teams 'user-name', 'repo-name'
|
|
451
|
+
# github.repos.teams 'user-name', 'repo-name' { |team| ... }
|
|
452
|
+
#
|
|
453
|
+
# @example
|
|
454
|
+
# github.repos(user: 'user-name, repo: 'repo-name').teams
|
|
455
|
+
#
|
|
456
|
+
# @api public
|
|
457
|
+
def teams(*args)
|
|
458
|
+
arguments(args, required: [:user, :repo])
|
|
459
|
+
|
|
460
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/teams", arguments.params)
|
|
461
|
+
return response unless block_given?
|
|
462
|
+
response.each { |el| yield el }
|
|
463
|
+
end
|
|
464
|
+
alias :list_teams :teams
|
|
465
|
+
alias :repo_teams :teams
|
|
466
|
+
alias :repository_teams :teams
|
|
467
|
+
end # Client::Repos
|
|
468
|
+
end # Github
|