github_api 0.17.0 → 0.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/lib/github_api.rb +38 -76
  3. data/lib/github_api/api.rb +35 -18
  4. data/lib/github_api/api/arguments.rb +5 -0
  5. data/lib/github_api/api/config.rb +2 -4
  6. data/lib/github_api/api/config/property_set.rb +1 -0
  7. data/lib/github_api/authorization.rb +2 -0
  8. data/lib/github_api/client.rb +2 -0
  9. data/lib/github_api/client/activity.rb +2 -0
  10. data/lib/github_api/client/activity/events.rb +2 -0
  11. data/lib/github_api/client/activity/feeds.rb +2 -0
  12. data/lib/github_api/client/activity/notifications.rb +2 -0
  13. data/lib/github_api/client/activity/starring.rb +2 -0
  14. data/lib/github_api/client/activity/watching.rb +2 -0
  15. data/lib/github_api/client/authorizations.rb +2 -0
  16. data/lib/github_api/client/authorizations/app.rb +3 -1
  17. data/lib/github_api/client/emojis.rb +2 -0
  18. data/lib/github_api/client/gists.rb +2 -0
  19. data/lib/github_api/client/gists/comments.rb +2 -0
  20. data/lib/github_api/client/git_data.rb +2 -0
  21. data/lib/github_api/client/git_data/blobs.rb +2 -1
  22. data/lib/github_api/client/git_data/commits.rb +2 -0
  23. data/lib/github_api/client/git_data/references.rb +2 -0
  24. data/lib/github_api/client/git_data/tags.rb +2 -0
  25. data/lib/github_api/client/git_data/trees.rb +2 -0
  26. data/lib/github_api/client/gitignore.rb +2 -0
  27. data/lib/github_api/client/issues.rb +2 -0
  28. data/lib/github_api/client/issues/assignees.rb +35 -0
  29. data/lib/github_api/client/issues/comments.rb +2 -0
  30. data/lib/github_api/client/issues/events.rb +2 -0
  31. data/lib/github_api/client/issues/labels.rb +2 -0
  32. data/lib/github_api/client/issues/milestones.rb +2 -0
  33. data/lib/github_api/client/markdown.rb +3 -1
  34. data/lib/github_api/client/meta.rb +2 -0
  35. data/lib/github_api/client/orgs.rb +2 -0
  36. data/lib/github_api/client/orgs/hooks.rb +2 -0
  37. data/lib/github_api/client/orgs/members.rb +2 -0
  38. data/lib/github_api/client/orgs/memberships.rb +2 -0
  39. data/lib/github_api/client/orgs/projects.rb +2 -0
  40. data/lib/github_api/client/orgs/teams.rb +2 -0
  41. data/lib/github_api/client/projects.rb +2 -0
  42. data/lib/github_api/client/projects/cards.rb +3 -1
  43. data/lib/github_api/client/projects/columns.rb +2 -0
  44. data/lib/github_api/client/pull_requests.rb +2 -0
  45. data/lib/github_api/client/pull_requests/comments.rb +2 -0
  46. data/lib/github_api/client/pull_requests/reviews.rb +2 -0
  47. data/lib/github_api/client/repos.rb +17 -13
  48. data/lib/github_api/client/repos/branches.rb +48 -0
  49. data/lib/github_api/client/repos/branches/protections.rb +75 -0
  50. data/lib/github_api/client/repos/collaborators.rb +2 -1
  51. data/lib/github_api/client/repos/comments.rb +2 -0
  52. data/lib/github_api/client/repos/commits.rb +2 -0
  53. data/lib/github_api/client/repos/contents.rb +2 -0
  54. data/lib/github_api/client/repos/deployments.rb +2 -0
  55. data/lib/github_api/client/repos/downloads.rb +2 -0
  56. data/lib/github_api/client/repos/forks.rb +2 -0
  57. data/lib/github_api/client/repos/hooks.rb +2 -0
  58. data/lib/github_api/client/repos/keys.rb +2 -0
  59. data/lib/github_api/client/repos/merging.rb +2 -0
  60. data/lib/github_api/client/repos/pages.rb +2 -0
  61. data/lib/github_api/client/repos/projects.rb +4 -2
  62. data/lib/github_api/client/repos/pub_sub_hubbub.rb +2 -0
  63. data/lib/github_api/client/repos/releases.rb +2 -0
  64. data/lib/github_api/client/repos/releases/assets.rb +3 -1
  65. data/lib/github_api/client/repos/releases/tags.rb +2 -0
  66. data/lib/github_api/client/repos/statistics.rb +2 -0
  67. data/lib/github_api/client/repos/statuses.rb +2 -0
  68. data/lib/github_api/client/say.rb +2 -0
  69. data/lib/github_api/client/scopes.rb +2 -0
  70. data/lib/github_api/client/search.rb +3 -0
  71. data/lib/github_api/client/search/legacy.rb +2 -0
  72. data/lib/github_api/client/users.rb +2 -0
  73. data/lib/github_api/client/users/emails.rb +3 -0
  74. data/lib/github_api/client/users/followers.rb +2 -0
  75. data/lib/github_api/client/users/keys.rb +2 -0
  76. data/lib/github_api/configuration.rb +2 -1
  77. data/lib/github_api/connection.rb +4 -0
  78. data/lib/github_api/error.rb +1 -4
  79. data/lib/github_api/error/client_error.rb +2 -0
  80. data/lib/github_api/error/service_error.rb +2 -0
  81. data/lib/github_api/ext/faraday.rb +1 -1
  82. data/lib/github_api/middleware.rb +7 -7
  83. data/lib/github_api/page_iterator.rb +4 -1
  84. data/lib/github_api/page_links.rb +4 -0
  85. data/lib/github_api/paged_request.rb +2 -0
  86. data/lib/github_api/pagination.rb +4 -1
  87. data/lib/github_api/parameter_filter.rb +4 -1
  88. data/lib/github_api/params_hash.rb +3 -0
  89. data/lib/github_api/request.rb +5 -5
  90. data/lib/github_api/request/jsonize.rb +0 -1
  91. data/lib/github_api/request/oauth2.rb +2 -0
  92. data/lib/github_api/request/verbs.rb +3 -0
  93. data/lib/github_api/response/header.rb +2 -0
  94. data/lib/github_api/response/raise_error.rb +2 -1
  95. data/lib/github_api/response_wrapper.rb +5 -0
  96. data/lib/github_api/utils/url.rb +2 -0
  97. data/lib/github_api/validations.rb +5 -8
  98. data/lib/github_api/validations/format.rb +2 -0
  99. data/lib/github_api/validations/presence.rb +2 -0
  100. data/lib/github_api/validations/required.rb +2 -0
  101. data/lib/github_api/version.rb +1 -1
  102. metadata +9 -34
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  # When you create a new GitHub repository via the API, you can specify a
5
7
  # .gitignore template to apply to the repository upon creation.
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  class Client::Issues < API
5
7
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Issues::Assignees < API
5
7
  # Lists all the available assignees (owner + collaborators)
@@ -38,5 +40,38 @@ module Github
38
40
  rescue Github::Error::NotFound
39
41
  false
40
42
  end
43
+
44
+ # Add assignees to an issue
45
+ #
46
+ # @example
47
+ # github = Github.new
48
+ # github.issues.assignees.add 'user', 'repo', 'issue-number',
49
+ # 'hubot', 'other_assignee', ...
50
+ #
51
+ # @api public
52
+ def add(*args)
53
+ arguments(args, required: [:user, :repo, :number])
54
+ params = arguments.params
55
+ params['data'] = { 'assignees' => arguments.remaining } unless arguments.remaining.empty?
56
+
57
+ post_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{arguments.number}/assignees", params)
58
+ end
59
+ alias :<< :add
60
+
61
+ # Remove a assignees from an issue
62
+ #
63
+ # @example
64
+ # github = Github.new
65
+ # github.issues.assignees.remove 'user', 'repo', 'issue-number',
66
+ # 'hubot', 'other_assignee'
67
+ #
68
+ # @api public
69
+ def remove(*args)
70
+ arguments(args, required: [:user, :repo, :number])
71
+ params = arguments.params
72
+ params['data'] = { 'assignees' => arguments.remaining } unless arguments.remaining.empty?
73
+
74
+ delete_request("/repos/#{arguments.user}/#{arguments.repo}/issues/#{arguments.number}/assignees", params)
75
+ end
41
76
  end # Issues::Assignees
42
77
  end # Github
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Issues::Comments < API
5
7
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Issues::Events < API
5
7
  # List events for an issue
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Issues::Labels < API
5
7
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Issues::Milestones < API
5
7
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  class Client::Markdown < API
5
7
 
@@ -49,7 +51,7 @@ module Github
49
51
  #
50
52
  def render_raw(*args)
51
53
  params = arguments(args).params
52
- mime_type, params['data'] = params['mime'], args.shift
54
+ params['data'] = args.shift
53
55
  params['raw'] = true
54
56
  params['accept'] = params.fetch('accept') { 'text/plain' }
55
57
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  class Client::Meta < API
5
7
  # Get meta information about GitHub.com, the service.
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  # Organizations API
5
7
  class Client::Orgs < API
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  # The Organizations Hooks API manages the post-receive web and
5
7
  # service hooks for an organization.
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Orgs::Members < API
5
7
  # List members
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Orgs::Memberships < API
5
7
  # List your organization memberships
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Orgs::Projects < API
5
7
  PREVIEW_MEDIA = "application/vnd.github.inertia-preview+json".freeze # :nodoc:
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  # All actions against teams require at a minimum an authenticated user
5
7
  # who is a member of the owner's team in the :org being managed.
@@ -1,6 +1,8 @@
1
1
  # encoding: utf-8
2
2
  # frozen_string_literal: true
3
3
 
4
+ require_relative '../api'
5
+
4
6
  module Github
5
7
  # Projects API
6
8
  class Client::Projects < API
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  # encoding: utf-8
3
3
 
4
+ require_relative '../../api'
5
+
4
6
  module Github
5
7
  class Client::Projects::Cards < API
6
8
  REQUIRED_MOVE_CARD_PARAMS = %w(position).freeze
@@ -65,7 +67,7 @@ module Github
65
67
  #
66
68
  # @example
67
69
  # github = Github.new
68
- # github.projects.cards.create :column_id, id: <content-id>, content_type: 'content-type'
70
+ # github.projects.cards.create :column_id, content_id: <content-id>, content_type: 'content-type'
69
71
  #
70
72
  # @see https://developer.github.com/v3/projects/cards/#create-a-project-card
71
73
  #
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  # encoding: utf-8
3
3
 
4
+ require_relative '../../api'
5
+
4
6
  module Github
5
7
  class Client::Projects::Columns < API
6
8
  REQUIRED_COLUMN_PARAMS = %w(name).freeze
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  class Client::PullRequests < API
5
7
 
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::PullRequests::Comments < API
5
7
  # List comments on a pull request
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::PullRequests::Reviews < API
5
7
  PREVIEW_MEDIA = "application/vnd.github.black-cat-preview+json".freeze # :nodoc:
@@ -1,9 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../api'
4
+
3
5
  module Github
4
6
  class Client::Repos < API
5
7
  # Load all the modules after initializing Repos to avoid superclass mismatch
6
8
  require_all 'github_api/client/repos',
9
+ 'branches',
7
10
  'collaborators',
8
11
  'comments',
9
12
  'commits',
@@ -87,6 +90,9 @@ module Github
87
90
  # Access to Repos::Statuses API
88
91
  namespace :statuses
89
92
 
93
+ # Access to Repos::Branches API
94
+ namespace :branches
95
+
90
96
  # List repositories for the authenticated user
91
97
  #
92
98
  # @example
@@ -278,7 +284,6 @@ module Github
278
284
  arguments(args, required: [:user, :repo]) do
279
285
  permit %w[ anon ]
280
286
  end
281
- params = arguments.params
282
287
 
283
288
  response = get_request("/repos/#{arguments.user}/#{arguments.repo}/contributors", arguments.params)
284
289
  return response unless block_given?
@@ -338,7 +343,6 @@ module Github
338
343
  # @api public
339
344
  def delete(*args)
340
345
  arguments(args, required: [:user, :repo])
341
- params = arguments.params
342
346
 
343
347
  delete_request("/repos/#{arguments.user}/#{arguments.repo}", arguments.params)
344
348
  end
@@ -356,14 +360,14 @@ module Github
356
360
  # repos.branches 'user-name', 'repo-name'
357
361
  #
358
362
  # @api public
359
- def branches(*args)
360
- arguments(args, required: [:user, :repo])
363
+ # def branches(*args)
364
+ # arguments(args, required: [:user, :repo])
361
365
 
362
- response = get_request("/repos/#{arguments.user}/#{arguments.repo}/branches", arguments.params)
363
- return response unless block_given?
364
- response.each { |el| yield el }
365
- end
366
- alias :list_branches :branches
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
367
371
 
368
372
  # Get branch
369
373
  #
@@ -373,11 +377,11 @@ module Github
373
377
  # github.repos.branch user: 'user-name', repo: 'repo-name', branch: 'branch-name'
374
378
  # github.repos(user: 'user-name', repo: 'repo-name', branch: 'branch-name').branch
375
379
  # @api public
376
- def branch(*args)
377
- arguments(args, required: [:user, :repo, :branch])
380
+ # def branch(*args)
381
+ # arguments(args, required: [:user, :repo, :branch])
378
382
 
379
- get_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}", arguments.params)
380
- end
383
+ # get_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}", arguments.params)
384
+ # end
381
385
 
382
386
  # List contributors
383
387
  #
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../../api'
4
+
5
+ module Github
6
+ class Client::Repos::Branches < API
7
+ require_all 'github_api/client/repos/branches', 'protections'
8
+
9
+ # Access to Repos::Branches::Protections API
10
+ namespace :protections
11
+
12
+ # List branches
13
+ #
14
+ # @example
15
+ # github = Github.new
16
+ # github.repos.branches.list 'user-name', 'repo-name'
17
+ # github.repos(user: 'user-name', repo: 'repo-name').branches.list
18
+ #
19
+ # @example
20
+ # repos = Github::Repos.new
21
+ # repos.branches.list 'user-name', 'repo-name'
22
+ #
23
+ # @api public
24
+ def list(*args)
25
+ arguments(args, required: [:user, :repo])
26
+
27
+ response = get_request("/repos/#{arguments.user}/#{arguments.repo}/branches", arguments.params)
28
+ return response unless block_given?
29
+ response.each { |el| yield el }
30
+ end
31
+ alias :all :list
32
+
33
+ # Get branch
34
+ #
35
+ # @example
36
+ # github = Github.new
37
+ # github.repos.branches.get 'user-name', 'repo-name', 'branch-name'
38
+ # github.repos.branches.get user: 'user-name', repo: 'repo-name', branch: 'branch-name'
39
+ # github.repos(user: 'user-name', repo: 'repo-name', branch: 'branch-name').branches.get
40
+ # @api public
41
+ def get(*args)
42
+ arguments(args, required: [:user, :repo, :branch])
43
+
44
+ get_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}", arguments.params)
45
+ end
46
+ alias :find :get
47
+ end # Client::Repos::Branches
48
+ end # Github
@@ -0,0 +1,75 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../../../api'
4
+
5
+ module Github
6
+ # The Branch Protections API
7
+ class Client::Repos::Branches::Protections < API
8
+ VALID_PROTECTION_PARAM_NAMES = %w[
9
+ required_status_checks
10
+ required_pull_request_reviews
11
+ enforce_admins
12
+ restrictions
13
+ accept
14
+ ].freeze
15
+
16
+ # Get a single branch's protection
17
+ #
18
+ # @example
19
+ # github = Github.new
20
+ # github.repos.branches.protections.get 'user', 'repo', 'branch'
21
+ #
22
+ # @api public
23
+ def get(*args)
24
+ arguments(args, required: [:user, :repo, :branch])
25
+
26
+ get_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}/protection", arguments.params)
27
+ end
28
+ alias :find :get
29
+
30
+ # Edit a branch protection
31
+ #
32
+ # Users with push access to the repository can edit a branch protection.
33
+ #
34
+ # @param [Hash] params
35
+ # @input params [String] :required_status_checks
36
+ # Required.
37
+ # @input params [String] :enforce_admins
38
+ # Required.
39
+ # @input params [String] :restrictions
40
+ # Required.
41
+ # @input params [String] :required_pull_request_reviews
42
+ # Required.
43
+ # Look to the branch protection API t see how to use these
44
+ # https://developer.github.com/v3/repos/branches/#update-branch-protection
45
+ #
46
+ # @example
47
+ # github = Github.new
48
+ # github.repos.branches.protections.edit 'user', 'repo', 'branch',
49
+ # required_pull_request_reviews: {dismiss_stale_reviews: false}
50
+ #
51
+ # @api public
52
+ def edit(*args)
53
+ arguments(args, required: [:user, :repo, :branch]) do
54
+ permit VALID_PROTECTION_PARAM_NAMES
55
+ end
56
+
57
+ put_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}/protection", arguments.params)
58
+ end
59
+ alias :update :edit
60
+
61
+ # Delete a branch protection
62
+ #
63
+ # @example
64
+ # github = Github.new
65
+ # github.repos.branches.protections.delete 'user', 'repo', 'branch'
66
+ #
67
+ # @api public
68
+ def delete(*args)
69
+ arguments(args, required: [:user, :repo, :branch])
70
+
71
+ delete_request("/repos/#{arguments.user}/#{arguments.repo}/branches/#{arguments.branch}/protection", arguments.params)
72
+ end
73
+ alias :remove :delete
74
+ end # Client::Repos::Branches::Protections
75
+ end # Github
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require_relative '../../api'
4
+
3
5
  module Github
4
6
  class Client::Repos::Collaborators < API
5
7
  # List collaborators
@@ -21,7 +23,6 @@ module Github
21
23
  # @api public
22
24
  def list(*args)
23
25
  arguments(args, required: [:user, :repo])
24
- params = arguments.params
25
26
 
26
27
  response = get_request("/repos/#{arguments.user}/#{arguments.repo}/collaborators", arguments.params)
27
28
  return response unless block_given?