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,146 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::Issues::Comments < API
|
|
7
|
+
|
|
8
|
+
VALID_ISSUE_COMMENT_PARAM_NAME = %w[
|
|
9
|
+
body
|
|
10
|
+
resource
|
|
11
|
+
mime_type
|
|
12
|
+
].freeze
|
|
13
|
+
|
|
14
|
+
# List comments on an issue
|
|
15
|
+
#
|
|
16
|
+
# @example
|
|
17
|
+
# github = Github.new
|
|
18
|
+
# github.issues.comments.all 'owner-name', 'repo-name', number: 'id'
|
|
19
|
+
# github.issues.comments.all 'owner-name', 'repo-name', number: 'id' {|com| .. }
|
|
20
|
+
# @example
|
|
21
|
+
# github.issues.comments.all owner: 'username', repo: 'repo-name', number: 'id'
|
|
22
|
+
#
|
|
23
|
+
# List comments in a repository
|
|
24
|
+
#
|
|
25
|
+
# @param [Hash] params
|
|
26
|
+
# @option params [String] :sort
|
|
27
|
+
# Optional string, created or updated
|
|
28
|
+
# @option params [String] :direction
|
|
29
|
+
# Optional string, asc or desc. Ignored with sort parameter.
|
|
30
|
+
# @option params [String] :since
|
|
31
|
+
# Optional string of a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ
|
|
32
|
+
#
|
|
33
|
+
# @example
|
|
34
|
+
# github = Github.new
|
|
35
|
+
# github.issues.comments.all 'user-name', 'repo-name'
|
|
36
|
+
# github.issues.comments.all 'user-name', 'repo-name' {|com| .. }
|
|
37
|
+
#
|
|
38
|
+
# @api public
|
|
39
|
+
def list(*args)
|
|
40
|
+
arguments(args, required: [:user, :repo])
|
|
41
|
+
params = arguments.params
|
|
42
|
+
|
|
43
|
+
response = if (number = params.delete('number'))
|
|
44
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{number}/comments", params)
|
|
45
|
+
else
|
|
46
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/issues/comments", params)
|
|
47
|
+
end
|
|
48
|
+
return response unless block_given?
|
|
49
|
+
response.each { |el| yield el }
|
|
50
|
+
end
|
|
51
|
+
alias :all :list
|
|
52
|
+
|
|
53
|
+
# Get a single comment
|
|
54
|
+
#
|
|
55
|
+
# @example
|
|
56
|
+
# github = Github.new
|
|
57
|
+
# github.issues.comments.find 'user-name', 'repo-name', 'id'
|
|
58
|
+
#
|
|
59
|
+
# @example
|
|
60
|
+
# github.issues.comments.find owner: 'user-name', repo: 'repo-name', id: 'id'
|
|
61
|
+
#
|
|
62
|
+
def get(*args)
|
|
63
|
+
arguments(args, required: [:user, :repo, :id])
|
|
64
|
+
params = arguments.params
|
|
65
|
+
|
|
66
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/issues/comments/#{arguments.id}", params)
|
|
67
|
+
end
|
|
68
|
+
alias :find :get
|
|
69
|
+
|
|
70
|
+
# Create a comment
|
|
71
|
+
#
|
|
72
|
+
# @param [Hash] params
|
|
73
|
+
# @option [String] :body
|
|
74
|
+
# Required string
|
|
75
|
+
#
|
|
76
|
+
# @example
|
|
77
|
+
# github = Github.new
|
|
78
|
+
# github.issues.comments.create 'user-name', 'repo-name', 'number',
|
|
79
|
+
# body: 'a new comment'
|
|
80
|
+
#
|
|
81
|
+
# @example
|
|
82
|
+
# github.issues.comments.create
|
|
83
|
+
# user: 'owner-name',
|
|
84
|
+
# repo: 'repo-name',
|
|
85
|
+
# number: 'issue-number',
|
|
86
|
+
# body: 'a new comment body'
|
|
87
|
+
#
|
|
88
|
+
# @api public
|
|
89
|
+
def create(*args)
|
|
90
|
+
arguments(args, required: [:user, :repo, :number]) do
|
|
91
|
+
permit VALID_ISSUE_COMMENT_PARAM_NAME
|
|
92
|
+
assert_required %w[ body ]
|
|
93
|
+
end
|
|
94
|
+
params = arguments.params
|
|
95
|
+
|
|
96
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{arguments.number}/comments", params)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Edit a comment
|
|
100
|
+
#
|
|
101
|
+
# @param [Hash] params
|
|
102
|
+
# @option params [String] :body
|
|
103
|
+
# Required string
|
|
104
|
+
#
|
|
105
|
+
# @example
|
|
106
|
+
# github = Github.new
|
|
107
|
+
# github.issues.comments.edit 'owner-name', 'repo-name', 'id',
|
|
108
|
+
# body: 'a new comment'
|
|
109
|
+
#
|
|
110
|
+
# @example
|
|
111
|
+
# github.issues.comments.edit
|
|
112
|
+
# user: 'owner-name',
|
|
113
|
+
# repo: 'repo-name',
|
|
114
|
+
# id: 'comment-id',
|
|
115
|
+
# body: 'a new comment body'
|
|
116
|
+
#
|
|
117
|
+
# @api public
|
|
118
|
+
def edit(*args)
|
|
119
|
+
arguments(args, required: [:user, :repo, :id]) do
|
|
120
|
+
permit VALID_ISSUE_COMMENT_PARAM_NAME
|
|
121
|
+
assert_required %w[ body ]
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
patch_request("/repos/#{arguments.user}/#{arguments.repo}/issues/comments/#{arguments.id}", arguments.params)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Delete a comment
|
|
128
|
+
#
|
|
129
|
+
# = Examples
|
|
130
|
+
# github = Github.new
|
|
131
|
+
# github.issues.comments.delete 'owner-name', 'repo-name', 'comment-id'
|
|
132
|
+
#
|
|
133
|
+
# @example
|
|
134
|
+
# github.issues.comments.delete
|
|
135
|
+
# user: 'owner-name',
|
|
136
|
+
# repo: 'repo-name',
|
|
137
|
+
# id: 'comment-id',
|
|
138
|
+
#
|
|
139
|
+
# @api public
|
|
140
|
+
def delete(*args)
|
|
141
|
+
arguments(args, required: [:user, :repo, :id])
|
|
142
|
+
|
|
143
|
+
delete_request("/repos/#{arguments.user}/#{arguments.repo}/issues/comments/#{arguments.id}", arguments.params)
|
|
144
|
+
end
|
|
145
|
+
end # Issues::Comments
|
|
146
|
+
end # Github
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::Issues::Events < API
|
|
7
|
+
# List events for an issue
|
|
8
|
+
#
|
|
9
|
+
# @example
|
|
10
|
+
# github = Github.new
|
|
11
|
+
# github.issues.events.list 'user-name', 'repo-name',
|
|
12
|
+
# issue_number: 'issue-number'
|
|
13
|
+
#
|
|
14
|
+
# List events for a repository
|
|
15
|
+
#
|
|
16
|
+
# @example
|
|
17
|
+
# github = Github.new
|
|
18
|
+
# github.issues.events.list 'user-name', 'repo-name'
|
|
19
|
+
#
|
|
20
|
+
# @api public
|
|
21
|
+
def list(*args)
|
|
22
|
+
arguments(args, required: [:user, :repo])
|
|
23
|
+
params = arguments.params
|
|
24
|
+
|
|
25
|
+
response = if (issue_number = params.delete('issue_number'))
|
|
26
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{issue_number}/events", params)
|
|
27
|
+
else
|
|
28
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/issues/events", params)
|
|
29
|
+
end
|
|
30
|
+
return response unless block_given?
|
|
31
|
+
response.each { |el| yield el }
|
|
32
|
+
end
|
|
33
|
+
alias :all :list
|
|
34
|
+
|
|
35
|
+
# Get a single event
|
|
36
|
+
#
|
|
37
|
+
# @example
|
|
38
|
+
# github = Github.new
|
|
39
|
+
# github.issues.events.get 'user-name', 'repo-name', 'event-id'
|
|
40
|
+
#
|
|
41
|
+
# @api public
|
|
42
|
+
def get(*args)
|
|
43
|
+
arguments(args, :required => [:user, :repo, :id])
|
|
44
|
+
params = arguments.params
|
|
45
|
+
|
|
46
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/issues/events/#{arguments.id}", params)
|
|
47
|
+
end
|
|
48
|
+
alias :find :get
|
|
49
|
+
end # Issues::Events
|
|
50
|
+
end # Github
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::Issues::Labels < API
|
|
7
|
+
|
|
8
|
+
VALID_LABEL_INPUTS = %w[ name color ].freeze
|
|
9
|
+
|
|
10
|
+
# List all labels for a repository
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# github = Github.new user: 'user-name', repo: 'repo-name'
|
|
14
|
+
# github.issues.labels.list
|
|
15
|
+
# github.issues.labels.list { |label| ... }
|
|
16
|
+
#
|
|
17
|
+
# Get labels for every issue in a milestone
|
|
18
|
+
#
|
|
19
|
+
# @example
|
|
20
|
+
# github = Github.new
|
|
21
|
+
# github.issues.labels.list 'user-name', 'repo-name', milestone_id: 'milestone-id'
|
|
22
|
+
#
|
|
23
|
+
# List labels on an issue
|
|
24
|
+
#
|
|
25
|
+
# @example
|
|
26
|
+
# github = Github.new
|
|
27
|
+
# github.issues.labels.list 'user-name', 'repo-name', issue_id: 'issue-id'
|
|
28
|
+
#
|
|
29
|
+
# @api public
|
|
30
|
+
def list(*args)
|
|
31
|
+
arguments(args, required: [:user, :repo])
|
|
32
|
+
params = arguments.params
|
|
33
|
+
user = arguments.user
|
|
34
|
+
repo = arguments.repo
|
|
35
|
+
|
|
36
|
+
response = if (milestone_id = params.delete('milestone_id'))
|
|
37
|
+
get_request("/repos/#{user}/#{repo}/milestones/#{milestone_id}/labels", params)
|
|
38
|
+
elsif (issue_id = params.delete('issue_id'))
|
|
39
|
+
get_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
|
|
40
|
+
else
|
|
41
|
+
get_request("/repos/#{user}/#{repo}/labels", params)
|
|
42
|
+
end
|
|
43
|
+
return response unless block_given?
|
|
44
|
+
response.each { |el| yield el }
|
|
45
|
+
end
|
|
46
|
+
alias :all :list
|
|
47
|
+
|
|
48
|
+
# Get a single label
|
|
49
|
+
#
|
|
50
|
+
# @example
|
|
51
|
+
# github = Github.new
|
|
52
|
+
# github.issues.labels.find 'user-name', 'repo-name', 'label-name'
|
|
53
|
+
#
|
|
54
|
+
# @example
|
|
55
|
+
# github = Github.new user: 'user-name', repo: 'repo-name'
|
|
56
|
+
# github.issues.labels.get label_name: 'bug'
|
|
57
|
+
#
|
|
58
|
+
# @api public
|
|
59
|
+
def get(*args)
|
|
60
|
+
arguments(args, required: [:user, :repo, :label_name])
|
|
61
|
+
params = arguments.params
|
|
62
|
+
|
|
63
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/labels/#{arguments.label_name}", params)
|
|
64
|
+
end
|
|
65
|
+
alias :find :get
|
|
66
|
+
|
|
67
|
+
# Create a label
|
|
68
|
+
#
|
|
69
|
+
# @param [Hash] params
|
|
70
|
+
# @option params [String] :name
|
|
71
|
+
# Required string
|
|
72
|
+
# @option params [String] :color
|
|
73
|
+
# Required string - 6 character hex code, without leading #
|
|
74
|
+
#
|
|
75
|
+
# @example
|
|
76
|
+
# github = Github.new user: 'user-name', repo: 'repo-name'
|
|
77
|
+
# github.issues.labels.create name: 'API', color: 'FFFFFF'
|
|
78
|
+
#
|
|
79
|
+
# @api public
|
|
80
|
+
def create(*args)
|
|
81
|
+
arguments(args, required: [:user, :repo]) do
|
|
82
|
+
permit VALID_LABEL_INPUTS
|
|
83
|
+
assert_required VALID_LABEL_INPUTS
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/labels", arguments.params)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Update a label
|
|
90
|
+
#
|
|
91
|
+
# @param [Hash] params
|
|
92
|
+
# @option params [String] :name
|
|
93
|
+
# Required string
|
|
94
|
+
# @option params [String] :color
|
|
95
|
+
# Required string - 6 character hex code, without leading #
|
|
96
|
+
#
|
|
97
|
+
# @example
|
|
98
|
+
# github = Github.new
|
|
99
|
+
# github.issues.labels.update 'user-name', 'repo-name', 'label-name',
|
|
100
|
+
# name: 'API', color: "FFFFFF"
|
|
101
|
+
#
|
|
102
|
+
# @api public
|
|
103
|
+
def update(*args)
|
|
104
|
+
arguments(args, required: [:user, :repo, :label_name]) do
|
|
105
|
+
permit VALID_LABEL_INPUTS
|
|
106
|
+
assert_required VALID_LABEL_INPUTS
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
patch_request("/repos/#{arguments.user}/#{arguments.repo}/labels/#{arguments.label_name}", arguments.params)
|
|
110
|
+
end
|
|
111
|
+
alias :edit :update
|
|
112
|
+
|
|
113
|
+
# Delete a label
|
|
114
|
+
#
|
|
115
|
+
# @examples
|
|
116
|
+
# github = Github.new
|
|
117
|
+
# github.issues.labels.delete 'user-name', 'repo-name', 'label-name'
|
|
118
|
+
#
|
|
119
|
+
# @api public
|
|
120
|
+
def delete(*args)
|
|
121
|
+
arguments(args, required: [:user, :repo, :label_name])
|
|
122
|
+
|
|
123
|
+
delete_request("/repos/#{arguments.user}/#{arguments.repo}/labels/#{arguments.label_name}", arguments.params)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Add labels to an issue
|
|
127
|
+
#
|
|
128
|
+
# @example
|
|
129
|
+
# github = Github.new
|
|
130
|
+
# github.issues.labels.add 'user-name', 'repo-name', 'issue-number',
|
|
131
|
+
# 'label1', 'label2', ...
|
|
132
|
+
#
|
|
133
|
+
# @api public
|
|
134
|
+
def add(*args)
|
|
135
|
+
arguments(args, required: [:user, :repo, :number])
|
|
136
|
+
params = arguments.params
|
|
137
|
+
params['data'] = arguments.remaining unless arguments.remaining.empty?
|
|
138
|
+
|
|
139
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{arguments.number}/labels", params)
|
|
140
|
+
end
|
|
141
|
+
alias :<< :add
|
|
142
|
+
|
|
143
|
+
# Remove a label from an issue
|
|
144
|
+
#
|
|
145
|
+
# @example
|
|
146
|
+
# github = Github.new
|
|
147
|
+
# github.issues.labels.remove 'user-name', 'repo-name', 'issue-number',
|
|
148
|
+
# label_name: 'label-name'
|
|
149
|
+
#
|
|
150
|
+
# Remove all labels from an issue
|
|
151
|
+
#
|
|
152
|
+
# @example
|
|
153
|
+
# github = Github.new
|
|
154
|
+
# github.issues.labels.remove 'user-name', 'repo-name', 'issue-number'
|
|
155
|
+
#
|
|
156
|
+
# @api public
|
|
157
|
+
def remove(*args)
|
|
158
|
+
arguments(args, required: [:user, :repo, :number])
|
|
159
|
+
params = arguments.params
|
|
160
|
+
user = arguments.user
|
|
161
|
+
repo = arguments.repo
|
|
162
|
+
number = arguments.number
|
|
163
|
+
|
|
164
|
+
if (label_name = params.delete('label_name'))
|
|
165
|
+
delete_request("/repos/#{user}/#{repo}/issues/#{number}/labels/#{label_name}", params)
|
|
166
|
+
else
|
|
167
|
+
delete_request("/repos/#{user}/#{repo}/issues/#{number}/labels", params)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# Replace all labels for an issue
|
|
172
|
+
#
|
|
173
|
+
# Sending an empty array ([]) will remove all Labels from the Issue.
|
|
174
|
+
#
|
|
175
|
+
# @example
|
|
176
|
+
# github = Github.new
|
|
177
|
+
# github.issues.labels.replace 'user-name', 'repo-name', 'issue-number',
|
|
178
|
+
# 'label1', 'label2', ...
|
|
179
|
+
#
|
|
180
|
+
# @api public
|
|
181
|
+
def replace(*args)
|
|
182
|
+
arguments(args, required: [:user, :repo, :number])
|
|
183
|
+
params = arguments.params
|
|
184
|
+
params['data'] = arguments.remaining unless arguments.remaining.empty?
|
|
185
|
+
|
|
186
|
+
put_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{arguments.number}/labels", params)
|
|
187
|
+
end
|
|
188
|
+
end # Issues::Labels
|
|
189
|
+
end # Github
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require_relative '../../api'
|
|
4
|
+
|
|
5
|
+
module Github
|
|
6
|
+
class Client::Issues::Milestones < API
|
|
7
|
+
|
|
8
|
+
VALID_MILESTONE_OPTIONS = {
|
|
9
|
+
'state' => %w[ open closed all ],
|
|
10
|
+
'sort' => %w[ due_date completeness ],
|
|
11
|
+
'direction' => %w[ desc asc ]
|
|
12
|
+
}.freeze # :nodoc:
|
|
13
|
+
|
|
14
|
+
VALID_MILESTONE_INPUTS = %w[
|
|
15
|
+
title
|
|
16
|
+
state
|
|
17
|
+
description
|
|
18
|
+
due_on
|
|
19
|
+
].freeze # :nodoc:
|
|
20
|
+
|
|
21
|
+
# List milestones for a repository
|
|
22
|
+
#
|
|
23
|
+
# @param [Hash] params
|
|
24
|
+
# @option params [String] :state
|
|
25
|
+
# The state of the milestone. Either open, closed, or all. Default: open
|
|
26
|
+
# @option params [String] :sort
|
|
27
|
+
# What to sort results by. Either due_date or completeness.
|
|
28
|
+
# Default: due_date
|
|
29
|
+
# @option params [String] :direction
|
|
30
|
+
# The directoin of the sort. Either asc or desc. Default: desc
|
|
31
|
+
#
|
|
32
|
+
# @example
|
|
33
|
+
# github = Github.new user: 'user-name', repo: 'repo-name'
|
|
34
|
+
# github.issues.milestones.list
|
|
35
|
+
#
|
|
36
|
+
# @example
|
|
37
|
+
# github.issues.milestones.list state: 'open', sort: 'due_date',
|
|
38
|
+
# direction: 'asc'
|
|
39
|
+
#
|
|
40
|
+
# @api public
|
|
41
|
+
def list(*args)
|
|
42
|
+
arguments(args, required: [:user, :repo]) do
|
|
43
|
+
permit VALID_MILESTONE_OPTIONS.keys
|
|
44
|
+
assert_values VALID_MILESTONE_OPTIONS
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
response = get_request("/repos/#{arguments.user}/#{arguments.repo}/milestones", arguments.params)
|
|
48
|
+
return response unless block_given?
|
|
49
|
+
response.each { |el| yield el }
|
|
50
|
+
end
|
|
51
|
+
alias :all :list
|
|
52
|
+
|
|
53
|
+
# Get a single milestone
|
|
54
|
+
#
|
|
55
|
+
# @example
|
|
56
|
+
# github = Github.new
|
|
57
|
+
# github.issues.milestones.get 'user-name', 'repo-name', 'milestone-number'
|
|
58
|
+
#
|
|
59
|
+
# @example
|
|
60
|
+
# github.issues.milestones.get
|
|
61
|
+
# user: 'user-name',
|
|
62
|
+
# repo: 'repo-name',
|
|
63
|
+
# number: 'milestone-number'
|
|
64
|
+
#
|
|
65
|
+
# @api public
|
|
66
|
+
def get(*args)
|
|
67
|
+
arguments(args, required: [:user, :repo, :number])
|
|
68
|
+
|
|
69
|
+
get_request("/repos/#{arguments.user}/#{arguments.repo}/milestones/#{arguments.number}", arguments.params)
|
|
70
|
+
end
|
|
71
|
+
alias :find :get
|
|
72
|
+
|
|
73
|
+
# Create a milestone
|
|
74
|
+
#
|
|
75
|
+
# @param [Hash] params
|
|
76
|
+
# @option params [String] :title
|
|
77
|
+
# Required string. The title of the milestone
|
|
78
|
+
# @option params [String] :state
|
|
79
|
+
# The state of the milestone. Either open or closed. Default: open.
|
|
80
|
+
# @option params [String] :description
|
|
81
|
+
# A description of the milestone
|
|
82
|
+
# @option params [String] :due_on
|
|
83
|
+
# The milestone due date. This is a timestamp in ISO 8601 format:
|
|
84
|
+
# YYYY-MM-DDTHH:MM:SSZ.
|
|
85
|
+
#
|
|
86
|
+
# @example
|
|
87
|
+
# github = Github.new user: 'user-name', repo: 'repo-name'
|
|
88
|
+
# github.issues.milestones.create title: 'hello-world',
|
|
89
|
+
# state: "open or closed",
|
|
90
|
+
# description: "String",
|
|
91
|
+
# due_on: "Time"
|
|
92
|
+
#
|
|
93
|
+
# @api public
|
|
94
|
+
def create(*args)
|
|
95
|
+
arguments(args, required: [:user, :repo]) do
|
|
96
|
+
permit VALID_MILESTONE_INPUTS
|
|
97
|
+
assert_required %w[ title ]
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
post_request("/repos/#{arguments.user}/#{arguments.repo}/milestones", arguments.params)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Update a milestone
|
|
104
|
+
#
|
|
105
|
+
# @param [Hash] params
|
|
106
|
+
# @option params [String] :title
|
|
107
|
+
# Required string. The title of the milestone
|
|
108
|
+
# @option params [String] :state
|
|
109
|
+
# The state of the milestone. Either open or closed. Default: open.
|
|
110
|
+
# @option params [String] :description
|
|
111
|
+
# A description of the milestone
|
|
112
|
+
# @option params [String] :due_on
|
|
113
|
+
# The milestone due date. This is a timestamp in ISO 8601 format:
|
|
114
|
+
# YYYY-MM-DDTHH:MM:SSZ.
|
|
115
|
+
#
|
|
116
|
+
# @example
|
|
117
|
+
# github = Github.new
|
|
118
|
+
# github.issues.milestones.update 'user-name', 'repo-name', 'number',
|
|
119
|
+
# :title => 'hello-world',
|
|
120
|
+
# :state => "open or closed",
|
|
121
|
+
# :description => "String",
|
|
122
|
+
# :due_on => "Time"
|
|
123
|
+
#
|
|
124
|
+
# @api public
|
|
125
|
+
def update(*args)
|
|
126
|
+
arguments(args, required: [:user, :repo, :number]) do
|
|
127
|
+
permit VALID_MILESTONE_INPUTS
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
patch_request("/repos/#{arguments.user}/#{arguments.repo}/milestones/#{arguments.number}", arguments.params)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Delete a milestone
|
|
134
|
+
#
|
|
135
|
+
# @example
|
|
136
|
+
# github = Github.new
|
|
137
|
+
# github.issues.milestones.delete 'user-name', 'repo-name', 'number'
|
|
138
|
+
#
|
|
139
|
+
# @api public
|
|
140
|
+
def delete(*args)
|
|
141
|
+
arguments(args, required: [:user, :repo, :number])
|
|
142
|
+
|
|
143
|
+
delete_request("/repos/#{arguments.user}/#{arguments.repo}/milestones/#{arguments.number}", arguments.params)
|
|
144
|
+
end
|
|
145
|
+
end # Issues::Milestones
|
|
146
|
+
end # Github
|