github_api 0.9.0 → 0.9.1

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.
Files changed (163) hide show
  1. data/README.md +50 -5
  2. data/features/cassettes/git_data/commits/get.yml +69 -0
  3. data/features/git_data/commmits.feature +14 -0
  4. data/lib/github_api.rb +1 -0
  5. data/lib/github_api/activity/events.rb +42 -33
  6. data/lib/github_api/activity/notifications.rb +22 -22
  7. data/lib/github_api/activity/starring.rb +16 -21
  8. data/lib/github_api/activity/watching.rb +16 -19
  9. data/lib/github_api/api.rb +51 -8
  10. data/lib/github_api/arguments.rb +155 -0
  11. data/lib/github_api/authorizations.rb +19 -20
  12. data/lib/github_api/configuration.rb +5 -0
  13. data/lib/github_api/emojis.rb +3 -3
  14. data/lib/github_api/error/validations.rb +2 -2
  15. data/lib/github_api/gists.rb +32 -42
  16. data/lib/github_api/gists/comments.rb +21 -23
  17. data/lib/github_api/git_data/blobs.rb +13 -16
  18. data/lib/github_api/git_data/commits.rb +12 -10
  19. data/lib/github_api/git_data/references.rb +24 -28
  20. data/lib/github_api/git_data/tags.rb +9 -11
  21. data/lib/github_api/git_data/trees.rb +10 -13
  22. data/lib/github_api/gitignore.rb +4 -6
  23. data/lib/github_api/issues.rb +24 -32
  24. data/lib/github_api/issues/assignees.rb +11 -8
  25. data/lib/github_api/issues/comments.rb +21 -26
  26. data/lib/github_api/issues/events.rb +7 -9
  27. data/lib/github_api/issues/labels.rb +39 -53
  28. data/lib/github_api/issues/milestones.rb +26 -33
  29. data/lib/github_api/markdown.rb +5 -6
  30. data/lib/github_api/meta.rb +3 -3
  31. data/lib/github_api/orgs.rb +10 -11
  32. data/lib/github_api/orgs/members.rb +18 -20
  33. data/lib/github_api/orgs/teams.rb +54 -58
  34. data/lib/github_api/pull_requests.rb +40 -54
  35. data/lib/github_api/pull_requests/comments.rb +19 -26
  36. data/lib/github_api/repos.rb +146 -101
  37. data/lib/github_api/repos/collaborators.rb +29 -30
  38. data/lib/github_api/repos/comments.rb +20 -25
  39. data/lib/github_api/repos/commits.rb +12 -14
  40. data/lib/github_api/repos/contents.rb +22 -14
  41. data/lib/github_api/repos/downloads.rb +19 -23
  42. data/lib/github_api/repos/forks.rb +6 -11
  43. data/lib/github_api/repos/hooks.rb +25 -34
  44. data/lib/github_api/repos/keys.rb +25 -27
  45. data/lib/github_api/repos/merging.rb +7 -6
  46. data/lib/github_api/repos/pub_sub_hubbub.rb +14 -18
  47. data/lib/github_api/repos/statuses.rb +13 -14
  48. data/lib/github_api/say.rb +1 -3
  49. data/lib/github_api/search.rb +12 -21
  50. data/lib/github_api/users.rb +10 -9
  51. data/lib/github_api/users/emails.rb +11 -9
  52. data/lib/github_api/users/followers.rb +25 -23
  53. data/lib/github_api/users/keys.rb +27 -29
  54. data/lib/github_api/version.rb +1 -1
  55. data/spec/github/activity/events/org_spec.rb +6 -6
  56. data/spec/github/activity/events/performed_spec.rb +1 -1
  57. data/spec/github/activity/events/received_spec.rb +1 -1
  58. data/spec/github/activity/events/user_org_spec.rb +4 -2
  59. data/spec/github/activity/notifications/create_spec.rb +1 -1
  60. data/spec/github/activity/notifications/delete_spec.rb +1 -1
  61. data/spec/github/activity/notifications/get_spec.rb +1 -1
  62. data/spec/github/activity/notifications/subscribed_spec.rb +1 -1
  63. data/spec/github/activity/starring/list_spec.rb +2 -0
  64. data/spec/github/activity/starring/starring_spec.rb +1 -1
  65. data/spec/github/activity/watching/list_spec.rb +2 -0
  66. data/spec/github/activity/watching/watching_spec.rb +1 -3
  67. data/spec/github/api/set_spec.rb +18 -4
  68. data/spec/github/api/with_spec.rb +28 -0
  69. data/spec/github/api_spec.rb +11 -33
  70. data/spec/github/arguments/parse_spec.rb +68 -0
  71. data/spec/github/authorizations/delete_spec.rb +1 -1
  72. data/spec/github/authorizations/get_spec.rb +1 -1
  73. data/spec/github/error/validations_spec.rb +3 -3
  74. data/spec/github/gists/comments/list_spec.rb +1 -1
  75. data/spec/github/gists/delete_spec.rb +1 -1
  76. data/spec/github/gists/fork_spec.rb +1 -1
  77. data/spec/github/gists/get_spec.rb +1 -1
  78. data/spec/github/gists/is_starred_spec.rb +2 -0
  79. data/spec/github/gists/star_spec.rb +1 -1
  80. data/spec/github/gists/unstar_spec.rb +1 -1
  81. data/spec/github/git_data/blobs/create_spec.rb +2 -0
  82. data/spec/github/git_data/blobs/get_spec.rb +1 -1
  83. data/spec/github/git_data/commits/create_spec.rb +2 -0
  84. data/spec/github/git_data/commits/get_spec.rb +3 -3
  85. data/spec/github/git_data/references/create_spec.rb +1 -1
  86. data/spec/github/git_data/references/delete_spec.rb +3 -1
  87. data/spec/github/git_data/tags/create_spec.rb +2 -0
  88. data/spec/github/gitignore/get_spec.rb +1 -1
  89. data/spec/github/issues/events/get_spec.rb +3 -1
  90. data/spec/github/issues/events/list_spec.rb +3 -1
  91. data/spec/github/issues/labels/add_spec.rb +6 -6
  92. data/spec/github/issues/labels/list_spec.rb +3 -1
  93. data/spec/github/issues/labels/replace_spec.rb +6 -7
  94. data/spec/github/issues/milestones/get_spec.rb +2 -0
  95. data/spec/github/normalizer_spec.rb +18 -6
  96. data/spec/github/orgs/members/conceal_spec.rb +6 -4
  97. data/spec/github/orgs/members/delete_spec.rb +2 -0
  98. data/spec/github/orgs/members/list_spec.rb +1 -1
  99. data/spec/github/orgs/members/member_spec.rb +3 -1
  100. data/spec/github/orgs/members/publicize_spec.rb +2 -0
  101. data/spec/github/orgs/teams/add_member_spec.rb +2 -0
  102. data/spec/github/orgs/teams/create_spec.rb +1 -1
  103. data/spec/github/orgs/teams/delete_spec.rb +1 -1
  104. data/spec/github/orgs/teams/edit_spec.rb +1 -1
  105. data/spec/github/orgs/teams/get_spec.rb +1 -1
  106. data/spec/github/orgs/teams/list_spec.rb +1 -1
  107. data/spec/github/orgs/teams/team_member_spec.rb +3 -1
  108. data/spec/github/parameter_filter_spec.rb +19 -58
  109. data/spec/github/pull_requests/comments/create_spec.rb +3 -1
  110. data/spec/github/pull_requests/comments/delete_spec.rb +1 -1
  111. data/spec/github/pull_requests/comments/edit_spec.rb +2 -0
  112. data/spec/github/pull_requests/comments/get_spec.rb +3 -1
  113. data/spec/github/pull_requests/comments/list_spec.rb +3 -1
  114. data/spec/github/pull_requests/commits_spec.rb +3 -3
  115. data/spec/github/pull_requests/create_spec.rb +4 -0
  116. data/spec/github/pull_requests/files_spec.rb +4 -0
  117. data/spec/github/pull_requests/get_spec.rb +3 -3
  118. data/spec/github/pull_requests/list_spec.rb +3 -3
  119. data/spec/github/pull_requests/merge_spec.rb +2 -0
  120. data/spec/github/pull_requests/merged_spec.rb +3 -1
  121. data/spec/github/pull_requests/update_spec.rb +4 -0
  122. data/spec/github/repos/collaborators/add_spec.rb +3 -1
  123. data/spec/github/repos/collaborators/get_spec.rb +1 -3
  124. data/spec/github/repos/collaborators/list_spec.rb +5 -1
  125. data/spec/github/repos/collaborators/remove_spec.rb +3 -1
  126. data/spec/github/repos/comments/create_spec.rb +4 -0
  127. data/spec/github/repos/comments/delete_spec.rb +2 -2
  128. data/spec/github/repos/comments/get_spec.rb +6 -2
  129. data/spec/github/repos/commits/compare_spec.rb +3 -3
  130. data/spec/github/repos/commits/get_spec.rb +3 -3
  131. data/spec/github/repos/commits/list_spec.rb +3 -3
  132. data/spec/github/repos/contents/archive_spec.rb +12 -0
  133. data/spec/github/repos/contents/get_spec.rb +5 -0
  134. data/spec/github/repos/contributors_spec.rb +7 -2
  135. data/spec/github/repos/downloads/create_spec.rb +4 -0
  136. data/spec/github/repos/downloads/delete_spec.rb +5 -1
  137. data/spec/github/repos/downloads/get_spec.rb +3 -1
  138. data/spec/github/repos/downloads/list_spec.rb +3 -1
  139. data/spec/github/repos/forks/create_spec.rb +2 -0
  140. data/spec/github/repos/forks/list_spec.rb +3 -1
  141. data/spec/github/repos/hooks/edit_spec.rb +1 -1
  142. data/spec/github/repos/keys/delete_spec.rb +1 -1
  143. data/spec/github/repos/keys/edit_spec.rb +2 -0
  144. data/spec/github/repos/keys/get_spec.rb +3 -1
  145. data/spec/github/repos/keys/list_spec.rb +4 -2
  146. data/spec/github/repos/list_spec.rb +6 -1
  147. data/spec/github/repos/pub_sub_hubbub/subscribe_service_spec.rb +27 -0
  148. data/spec/github/repos/pub_sub_hubbub/subscribe_spec.rb +51 -0
  149. data/spec/github/repos/pub_sub_hubbub/unsubscribe_service_spec.rb +21 -0
  150. data/spec/github/repos/pub_sub_hubbub/unsubscribe_spec.rb +58 -0
  151. data/spec/github/repos/statuses/create_spec.rb +2 -0
  152. data/spec/github/search_spec.rb +25 -10
  153. data/spec/github/users/followers/follow_spec.rb +1 -1
  154. data/spec/github/users/followers/is_following_spec.rb +1 -1
  155. data/spec/github/users/followers/unfollow_spec.rb +1 -1
  156. data/spec/github/users/keys/delete_spec.rb +1 -1
  157. data/spec/github/users/keys/get_spec.rb +1 -1
  158. data/spec/github/users/keys/update_spec.rb +1 -1
  159. data/spec/github/users/update_spec.rb +1 -1
  160. data/spec/integration/arguments_spec.rb +76 -0
  161. data/spec/{github → integration}/authorizations_spec.rb +0 -0
  162. metadata +44 -35
  163. data/spec/github/repos/pub_sub_hubbub_spec.rb +0 -78
@@ -34,10 +34,9 @@ module Github
34
34
  # github = Github.new
35
35
  # github.git_data.trees.get 'user-name', 'repo-name', 'sha', 'recursive' => true
36
36
  #
37
- def get(user_name, repo_name, sha, params={})
38
- set :user => user_name, :repo => repo_name
39
- assert_presence_of user, repo, sha
40
- normalize! params
37
+ def get(*args)
38
+ arguments(args, :required => [:user, :repo, :sha])
39
+ params = arguments.params
41
40
 
42
41
  response = if params['recursive']
43
42
  params['recursive'] = 1
@@ -79,16 +78,14 @@ module Github
79
78
  # ...
80
79
  # ]
81
80
  #
82
- def create(user_name, repo_name, params={})
83
- set :user => user_name, :repo => repo_name
84
- assert_presence_of user, repo
85
- normalize! params
86
- assert_required_keys(%w[ tree ], params)
87
-
88
- filter! VALID_TREE_PARAM_NAMES, params['tree']
89
- assert_valid_values(VALID_TREE_PARAM_VALUES, params['tree'])
81
+ def create(*args)
82
+ arguments(args, :required => [:user, :repo]) do
83
+ assert_required %w[ tree ]
84
+ sift VALID_TREE_PARAM_NAMES, 'tree'
85
+ assert_values VALID_TREE_PARAM_VALUES, 'tree'
86
+ end
90
87
 
91
- post_request("/repos/#{user}/#{repo}/git/trees", params)
88
+ post_request("/repos/#{user}/#{repo}/git/trees", arguments.params)
92
89
  end
93
90
 
94
91
  end # GitData::Trees
@@ -14,10 +14,9 @@ module Github
14
14
  # github.gitignore.list { |template| ... }
15
15
  #
16
16
  def list(*args)
17
- params = args.extract_options!
18
- normalize! params
17
+ arguments(args)
19
18
 
20
- response = get_request("/gitignore/templates", params)
19
+ response = get_request("/gitignore/templates", arguments.params)
21
20
  return response unless block_given?
22
21
  response.each { |el| yield el }
23
22
  end
@@ -35,9 +34,8 @@ module Github
35
34
  # github = Github.new
36
35
  # github.gitignore.get "template-name", mime: 'applicatin/vnd.github.raw'
37
36
  #
38
- def get(name, params={})
39
- normalize! params
40
- assert_presence_of name
37
+ def get(*args)
38
+ params = arguments(args, :required => [:name]).params
41
39
 
42
40
  if (mime_type = params.delete('mime'))
43
41
  options = { :raw => true, :headers => {'Accept' => mime_type} }
@@ -134,8 +134,9 @@ module Github
134
134
  # :direction => 'asc'
135
135
  #
136
136
  def list(*args)
137
- params = args.extract_options!
138
- normalize! params
137
+ params = arguments(args) do
138
+ assert_values VALID_ISSUE_PARAM_VALUES
139
+ end.params
139
140
  # filter! VALID_ISSUE_PARAM_NAMES, params
140
141
  # _merge_mime_type(:issue, params)
141
142
  # assert_valid_values(VALID_ISSUE_PARAM_VALUES, params)
@@ -159,14 +160,14 @@ module Github
159
160
 
160
161
  # List issues for a repository
161
162
  #
162
- def list_repo(user_name, repo_name, params)
163
- set :user => user_name, :repo => repo_name
164
- assert_presence_of user, repo
165
-
166
- filter! VALID_ISSUE_PARAM_NAMES, params
167
- assert_valid_values(VALID_ISSUE_PARAM_VALUES, params)
163
+ # def list_repo(user_name, repo_name, params)
164
+ def list_repo(*args)
165
+ arguments(args, :required => [:user, :repo]) do
166
+ sift VALID_ISSUE_PARAM_NAMES
167
+ assert_values VALID_ISSUE_PARAM_VALUES
168
+ end
168
169
 
169
- get_request("/repos/#{user}/#{repo}/issues", params)
170
+ get_request("/repos/#{user}/#{repo}/issues", arguments.params)
170
171
  end
171
172
  private :list_repo
172
173
 
@@ -176,14 +177,10 @@ module Github
176
177
  # github = Github.new
177
178
  # github.issues.get 'user-name', 'repo-name', 'issue-id'
178
179
  #
179
- def get(user_name, repo_name, issue_id, params={})
180
- set :user => user_name, :repo => repo_name
181
- assert_presence_of user, repo, issue_id
180
+ def get(*args)
181
+ arguments(args, :required => [:user, :repo, :issue_id])
182
182
 
183
- normalize! params
184
- # _merge_mime_type(:issue, params)
185
-
186
- get_request("/repos/#{user}/#{repo}/issues/#{issue_id}", params)
183
+ get_request("/repos/#{user}/#{repo}/issues/#{issue_id}", arguments.params)
187
184
  end
188
185
  alias :find :get
189
186
 
@@ -207,16 +204,13 @@ module Github
207
204
  # "Label2"
208
205
  # ]
209
206
  #
210
- def create(user_name, repo_name, params={})
211
- set :user => user_name, :repo => repo_name
212
- assert_presence_of user, repo
213
-
214
- normalize! params
215
- # _merge_mime_type(:issue, params)
216
- filter! VALID_ISSUE_PARAM_NAMES, params
217
- assert_required_keys(%w[ title ], params)
207
+ def create(*args)
208
+ arguments(args, :required => [:user, :repo]) do
209
+ sift VALID_ISSUE_PARAM_NAMES
210
+ assert_required %w[ title ]
211
+ end
218
212
 
219
- post_request("/repos/#{user}/#{repo}/issues", params)
213
+ post_request("/repos/#{user}/#{repo}/issues", arguments.params)
220
214
  end
221
215
 
222
216
  # Edit an issue
@@ -241,13 +235,11 @@ module Github
241
235
  # "Label2"
242
236
  # ]
243
237
  #
244
- def edit(user_name, repo_name, issue_id, params={})
245
- set :user => user_name, :repo => repo_name
246
- assert_presence_of user, repo, issue_id
247
-
248
- normalize! params
249
- # _merge_mime_type(:issue, params)
250
- filter! VALID_ISSUE_PARAM_NAMES, params
238
+ def edit(*args)
239
+ arguments(args, :required => [:user, :repo, :issue_id]) do
240
+ sift VALID_ISSUE_PARAM_NAMES
241
+ end
242
+ params = arguments.params
251
243
 
252
244
  patch_request("/repos/#{user}/#{repo}/issues/#{issue_id}", params)
253
245
  end
@@ -11,11 +11,11 @@ module Github
11
11
  # Github.issues.assignees.list 'user', 'repo'
12
12
  # Github.issues.assignees.list 'user', 'repo' { |assignee| ... }
13
13
  #
14
- def list(user_name, repo_name, params={})
15
- assert_presence_of user_name, repo_name
16
- normalize! params
14
+ def list(*args)
15
+ arguments(args, :required => [:user, :repo])
16
+ params = arguments.params
17
17
 
18
- response = get_request("/repos/#{user_name}/#{repo_name}/assignees", params)
18
+ response = get_request("/repos/#{user}/#{repo}/assignees", params)
19
19
  return response unless block_given?
20
20
  response.each { |el| yield el }
21
21
  end
@@ -27,11 +27,14 @@ module Github
27
27
  #
28
28
  # Github.issues.assignees.check 'user', 'repo', 'assignee'
29
29
  #
30
- def check(user_name, repo_name, assignee, params={})
31
- assert_presence_of user_name, repo_name, assignee
32
- normalize! params
30
+ # github = Github.new user: 'user-name', repo: 'repo-name'
31
+ # github.issues.assignees.check 'assignee'
32
+ #
33
+ def check(*args)
34
+ arguments(args, :required => [:user, :repo, :assignee])
35
+ params = arguments.params
33
36
 
34
- get_request("/repos/#{user_name}/#{repo_name}/assignees/#{assignee}",params)
37
+ get_request("/repos/#{user}/#{repo}/assignees/#{assignee}",params)
35
38
  true
36
39
  rescue Github::Error::NotFound
37
40
  false
@@ -30,10 +30,9 @@ module Github
30
30
  # github.issues.comments.all 'user-name', 'repo-name'
31
31
  # github.issues.comments.all 'user-name', 'repo-name' {|com| .. }
32
32
  #
33
- def list(user_name, repo_name, params={})
34
- set :user => user_name, :repo => repo_name
35
- assert_presence_of user, repo
36
- normalize! params
33
+ def list(*args)
34
+ arguments(args, :required => [:user, :repo])
35
+ params = arguments.params
37
36
 
38
37
  response = if (issue_id = params.delete('issue_id'))
39
38
  get_request("/repos/#{user}/#{repo}/issues/#{issue_id}/comments", params)
@@ -51,10 +50,9 @@ module Github
51
50
  # github = Github.new
52
51
  # github.issues.comments.find 'user-name', 'repo-name', 'comment-id'
53
52
  #
54
- def get(user_name, repo_name, comment_id, params={})
55
- set :user => user_name, :repo => repo_name
56
- assert_presence_of user, repo, comment_id
57
- normalize! params
53
+ def get(*args)
54
+ arguments(args, :required => [:user, :repo, :comment_id])
55
+ params = arguments.params
58
56
 
59
57
  get_request("/repos/#{user}/#{repo}/issues/comments/#{comment_id}", params)
60
58
  end
@@ -70,13 +68,12 @@ module Github
70
68
  # github.issues.comments.create 'user-name', 'repo-name', 'issue-id',
71
69
  # 'body': 'a new comment'
72
70
  #
73
- def create(user_name, repo_name, issue_id, params={})
74
- set :user => user_name, :repo => repo_name
75
- assert_presence_of user, repo, issue_id
76
-
77
- normalize! params
78
- filter! VALID_ISSUE_COMMENT_PARAM_NAME, params
79
- assert_required_keys(%w[ body ], params)
71
+ def create(*args)
72
+ arguments(args, :required => [:user, :repo, :issue_id]) do
73
+ sift VALID_ISSUE_COMMENT_PARAM_NAME
74
+ assert_required %w[ body ]
75
+ end
76
+ params = arguments.params
80
77
 
81
78
  post_request("/repos/#{user}/#{repo}/issues/#{issue_id}/comments", params)
82
79
  end
@@ -91,13 +88,12 @@ module Github
91
88
  # github.issues.comments.edit 'user-name', 'repo-name', 'comment-id',
92
89
  # 'body': 'a new comment'
93
90
  #
94
- def edit(user_name, repo_name, comment_id, params={})
95
- set :user => user_name, :repo => repo_name
96
- assert_presence_of user, repo, comment_id
97
-
98
- normalize! params
99
- filter! VALID_ISSUE_COMMENT_PARAM_NAME, params
100
- assert_required_keys(%w[ body ], params)
91
+ def edit(*args)
92
+ arguments(args, :required => [:user, :repo, :comment_id]) do
93
+ sift VALID_ISSUE_COMMENT_PARAM_NAME
94
+ assert_required %w[ body ]
95
+ end
96
+ params = arguments.params
101
97
 
102
98
  patch_request("/repos/#{user}/#{repo}/issues/comments/#{comment_id}", params)
103
99
  end
@@ -108,10 +104,9 @@ module Github
108
104
  # github = Github.new
109
105
  # github.issues.comments.delete 'user-name', 'repo-name', 'comment-id'
110
106
  #
111
- def delete(user_name, repo_name, comment_id, params={})
112
- set :user => user_name, :repo => repo_name
113
- assert_presence_of user, repo, comment_id
114
- normalize! params
107
+ def delete(*args)
108
+ arguments(args, :required => [:user, :repo, :comment_id])
109
+ params = arguments.params
115
110
 
116
111
  delete_request("/repos/#{user}/#{repo}/issues/comments/#{comment_id}", params)
117
112
  end
@@ -15,10 +15,9 @@ module Github
15
15
  # github = Github.new
16
16
  # github.issues.events.list 'user-name', 'repo-name'
17
17
  #
18
- def list(user_name, repo_name, params={})
19
- set :user => user_name, :repo => repo_name
20
- assert_presence_of user, repo
21
- normalize! params
18
+ def list(*args)
19
+ arguments(args, :required => [:user, :repo])
20
+ params = arguments.params
22
21
 
23
22
  response = if (issue_id = params.delete('issue_id'))
24
23
  get_request("/repos/#{user}/#{repo}/issues/#{issue_id}/events", params)
@@ -36,12 +35,11 @@ module Github
36
35
  # github = Github.new
37
36
  # github.issues.events.get 'user-name', 'repo-name', 'event-id'
38
37
  #
39
- def get(user_name, repo_name, event_id, params={})
40
- set :user => user_name, :repo => repo_name
41
- assert_presence_of user, repo, event_id
42
- normalize! params
38
+ def get(*args)
39
+ arguments(args, :required => [:user, :repo, :event_id])
40
+ params = arguments.params
43
41
 
44
- get_request("/repos/#{user}/#{repo}/issues/events/#{event_id}")
42
+ get_request("/repos/#{user}/#{repo}/issues/events/#{event_id}", params)
45
43
  end
46
44
  alias :find :get
47
45
 
@@ -21,13 +21,12 @@ module Github
21
21
  # List labels on an issue
22
22
  #
23
23
  # = Examples
24
- # @github = Github.new
25
- # @github.issues.labels.list 'user-name', 'repo-name', issue_id: 'issue-id'
24
+ # github = Github.new
25
+ # github.issues.labels.list 'user-name', 'repo-name', issue_id: 'issue-id'
26
26
  #
27
- def list(user_name, repo_name, params={})
28
- set :user => user_name, :repo => repo_name
29
- assert_presence_of user, repo
30
- normalize! params
27
+ def list(*args)
28
+ arguments(args, :required => [:user, :repo])
29
+ params = arguments.params
31
30
 
32
31
  response = if (milestone_id = params.delete('milestone_id'))
33
32
  get_request("/repos/#{user}/#{repo}/milestones/#{milestone_id}/labels", params)
@@ -47,10 +46,12 @@ module Github
47
46
  # github = Github.new
48
47
  # github.issues.labels.find 'user-name', 'repo-name', 'label-name'
49
48
  #
50
- def get(user_name, repo_name, label_name, params={})
51
- set :user => user_name, :repo => repo_name
52
- assert_presence_of user, repo, label_name
53
- normalize! params
49
+ # github = Github.new user: 'user-name', repo: 'repo-name'
50
+ # github.issues.labels.get label_name: 'bug'
51
+ #
52
+ def get(*args)
53
+ arguments(args, :required => [:user, :repo, :label_name])
54
+ params = arguments.params
54
55
 
55
56
  get_request("/repos/#{user}/#{repo}/labels/#{label_name}", params)
56
57
  end
@@ -66,15 +67,13 @@ module Github
66
67
  # github = Github.new user: 'user-name', repo: 'repo-name'
67
68
  # github.issues.labels.create name: 'API', color: 'FFFFFF'
68
69
  #
69
- def create(user_name, repo_name, params={})
70
- set :user => user_name, :repo => repo_name
71
- assert_presence_of user, repo
72
-
73
- normalize! params
74
- filter! VALID_LABEL_INPUTS, params
75
- assert_required_keys(VALID_LABEL_INPUTS, params)
70
+ def create(*args)
71
+ arguments(args, :required => [:user, :repo]) do
72
+ sift VALID_LABEL_INPUTS
73
+ assert_required VALID_LABEL_INPUTS
74
+ end
76
75
 
77
- post_request("/repos/#{user}/#{repo}/labels", params)
76
+ post_request("/repos/#{user}/#{repo}/labels", arguments.params)
78
77
  end
79
78
 
80
79
  # Update a label
@@ -84,19 +83,17 @@ module Github
84
83
  # <tt>:color</tt> - Required string-6 character hex code, without leading #
85
84
  #
86
85
  # = Examples
87
- # @github = Github.new
88
- # @github.issues.labels.update 'user-name', 'repo-name', 'label-name',
86
+ # github = Github.new
87
+ # github.issues.labels.update 'user-name', 'repo-name', 'label-name',
89
88
  # name: 'API', color: "FFFFFF"
90
89
  #
91
- def update(user_name, repo_name, label_name, params={})
92
- set :user => user_name, :repo => repo_name
93
- assert_presence_of user, repo, label_name
94
-
95
- normalize! params
96
- filter! VALID_LABEL_INPUTS, params
97
- assert_required_keys(VALID_LABEL_INPUTS, params)
90
+ def update(*args)
91
+ arguments(args, :required => [:user, :repo, :label_name]) do
92
+ sift VALID_LABEL_INPUTS
93
+ assert_required VALID_LABEL_INPUTS
94
+ end
98
95
 
99
- patch_request("/repos/#{user}/#{repo}/labels/#{label_name}", params)
96
+ patch_request("/repos/#{user}/#{repo}/labels/#{label_name}", arguments.params)
100
97
  end
101
98
  alias :edit :update
102
99
 
@@ -106,14 +103,10 @@ module Github
106
103
  # github = Github.new
107
104
  # github.issues.labels.delete 'user-name', 'repo-name', 'label-name'
108
105
  #
109
- def delete(user_name, repo_name, label_name, params={})
110
- set :user => user_name, :repo => repo_name
111
- assert_presence_of user, repo
112
-
113
- assert_presence_of label_name
114
- normalize! params
106
+ def delete(*args)
107
+ arguments(args, :required => [:user, :repo, :label_name])
115
108
 
116
- delete_request("/repos/#{user}/#{repo}/labels/#{label_name}", params)
109
+ delete_request("/repos/#{user}/#{repo}/labels/#{label_name}", arguments.params)
117
110
  end
118
111
 
119
112
  # Add labels to an issue
@@ -122,13 +115,10 @@ module Github
122
115
  # github = Github.new
123
116
  # github.issues.labels.add 'user-name', 'repo-name', 'issue-id', 'label1', 'label2', ...
124
117
  #
125
- def add(user_name, repo_name, issue_id, *args)
126
- params = args.extract_options!
127
- params['data'] = args unless args.empty?
128
-
129
- set :user => user_name, :repo => repo_name
130
- assert_presence_of user, repo, issue_id
131
- normalize! params
118
+ def add(*args)
119
+ arguments(args, :required => [:user, :repo, :issue_id])
120
+ params = arguments.params
121
+ params['data'] = arguments.remaining unless arguments.remaining.empty?
132
122
 
133
123
  post_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
134
124
  end
@@ -146,10 +136,9 @@ module Github
146
136
  # github = Github.new
147
137
  # github.issues.labels.remove 'user-name', 'repo-name', 'issue-id'
148
138
  #
149
- def remove(user_name, repo_name, issue_id, params={})
150
- set :user => user_name, :repo => repo_name
151
- assert_presence_of user, repo, issue_id
152
- normalize! params
139
+ def remove(*args)
140
+ arguments(args, :required => [:user, :repo, :issue_id])
141
+ params = arguments.params
153
142
 
154
143
  if (label_name = params.delete('label_name'))
155
144
  delete_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels/#{label_name}", params)
@@ -166,13 +155,10 @@ module Github
166
155
  # github = Github.new
167
156
  # github.issues.labels.replace 'user-name', 'repo-name', 'issue-id', 'label1', 'label2', ...
168
157
  #
169
- def replace(user_name, repo_name, issue_id, *args)
170
- params = args.extract_options!
171
- params['data'] = args unless args.empty?
172
-
173
- set :user => user_name, :repo => repo_name
174
- assert_presence_of user, repo, issue_id
175
- normalize! params
158
+ def replace(*args)
159
+ arguments(args, :required => [:user, :repo, :issue_id])
160
+ params = arguments.params
161
+ params['data'] = arguments.remaining unless arguments.remaining.empty?
176
162
 
177
163
  put_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
178
164
  end