bitbuckets 0.2.0

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 (122) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +7 -0
  3. data/README.md +169 -0
  4. data/Rakefile +1 -0
  5. data/lib/bitbucket_rest_api.rb +86 -0
  6. data/lib/bitbucket_rest_api/api.rb +104 -0
  7. data/lib/bitbucket_rest_api/api/actions.rb +32 -0
  8. data/lib/bitbucket_rest_api/api_factory.rb +29 -0
  9. data/lib/bitbucket_rest_api/authorization.rb +31 -0
  10. data/lib/bitbucket_rest_api/client.rb +53 -0
  11. data/lib/bitbucket_rest_api/configuration.rb +103 -0
  12. data/lib/bitbucket_rest_api/connection.rb +97 -0
  13. data/lib/bitbucket_rest_api/constants.rb +57 -0
  14. data/lib/bitbucket_rest_api/core_ext/array.rb +6 -0
  15. data/lib/bitbucket_rest_api/core_ext/hash.rb +58 -0
  16. data/lib/bitbucket_rest_api/deprecation.rb +36 -0
  17. data/lib/bitbucket_rest_api/error.rb +37 -0
  18. data/lib/bitbucket_rest_api/error/bad_events.rb +10 -0
  19. data/lib/bitbucket_rest_api/error/bad_request.rb +11 -0
  20. data/lib/bitbucket_rest_api/error/blank_value.rb +10 -0
  21. data/lib/bitbucket_rest_api/error/client_error.rb +19 -0
  22. data/lib/bitbucket_rest_api/error/forbidden.rb +11 -0
  23. data/lib/bitbucket_rest_api/error/internal_server_error.rb +11 -0
  24. data/lib/bitbucket_rest_api/error/invalid_options.rb +17 -0
  25. data/lib/bitbucket_rest_api/error/no_events.rb +10 -0
  26. data/lib/bitbucket_rest_api/error/not_found.rb +11 -0
  27. data/lib/bitbucket_rest_api/error/required_params.rb +17 -0
  28. data/lib/bitbucket_rest_api/error/service_error.rb +18 -0
  29. data/lib/bitbucket_rest_api/error/service_unavailable.rb +11 -0
  30. data/lib/bitbucket_rest_api/error/unauthorized.rb +11 -0
  31. data/lib/bitbucket_rest_api/error/unknown_value.rb +17 -0
  32. data/lib/bitbucket_rest_api/error/unprocessable_entity.rb +11 -0
  33. data/lib/bitbucket_rest_api/error/validations.rb +17 -0
  34. data/lib/bitbucket_rest_api/invitations.rb +14 -0
  35. data/lib/bitbucket_rest_api/issues.rb +229 -0
  36. data/lib/bitbucket_rest_api/issues/comments.rb +116 -0
  37. data/lib/bitbucket_rest_api/issues/components.rb +105 -0
  38. data/lib/bitbucket_rest_api/issues/milestones.rb +105 -0
  39. data/lib/bitbucket_rest_api/normalizer.rb +24 -0
  40. data/lib/bitbucket_rest_api/parameter_filter.rb +29 -0
  41. data/lib/bitbucket_rest_api/repos.rb +276 -0
  42. data/lib/bitbucket_rest_api/repos/changesets.rb +52 -0
  43. data/lib/bitbucket_rest_api/repos/commits.rb +38 -0
  44. data/lib/bitbucket_rest_api/repos/components.rb +35 -0
  45. data/lib/bitbucket_rest_api/repos/default_reviewers.rb +60 -0
  46. data/lib/bitbucket_rest_api/repos/download.rb +15 -0
  47. data/lib/bitbucket_rest_api/repos/following.rb +38 -0
  48. data/lib/bitbucket_rest_api/repos/forks.rb +66 -0
  49. data/lib/bitbucket_rest_api/repos/keys.rb +86 -0
  50. data/lib/bitbucket_rest_api/repos/pull_request.rb +158 -0
  51. data/lib/bitbucket_rest_api/repos/services.rb +101 -0
  52. data/lib/bitbucket_rest_api/repos/sources.rb +36 -0
  53. data/lib/bitbucket_rest_api/repos/webhooks.rb +99 -0
  54. data/lib/bitbucket_rest_api/request.rb +71 -0
  55. data/lib/bitbucket_rest_api/request/basic_auth.rb +30 -0
  56. data/lib/bitbucket_rest_api/request/jsonize.rb +39 -0
  57. data/lib/bitbucket_rest_api/request/oauth.rb +50 -0
  58. data/lib/bitbucket_rest_api/response.rb +26 -0
  59. data/lib/bitbucket_rest_api/response/helpers.rb +18 -0
  60. data/lib/bitbucket_rest_api/response/jsonize.rb +25 -0
  61. data/lib/bitbucket_rest_api/response/mashify.rb +23 -0
  62. data/lib/bitbucket_rest_api/response/raise_error.rb +28 -0
  63. data/lib/bitbucket_rest_api/response/xmlize.rb +25 -0
  64. data/lib/bitbucket_rest_api/result.rb +136 -0
  65. data/lib/bitbucket_rest_api/teams.rb +91 -0
  66. data/lib/bitbucket_rest_api/user.rb +87 -0
  67. data/lib/bitbucket_rest_api/users.rb +20 -0
  68. data/lib/bitbucket_rest_api/users/account.rb +50 -0
  69. data/lib/bitbucket_rest_api/utils/url.rb +61 -0
  70. data/lib/bitbucket_rest_api/validations.rb +23 -0
  71. data/lib/bitbucket_rest_api/validations/format.rb +21 -0
  72. data/lib/bitbucket_rest_api/validations/presence.rb +21 -0
  73. data/lib/bitbucket_rest_api/validations/required.rb +37 -0
  74. data/lib/bitbucket_rest_api/validations/token.rb +38 -0
  75. data/lib/bitbucket_rest_api/version.rb +10 -0
  76. data/lib/bitbuckets.rb +2 -0
  77. data/spec/bitbucket_rest_api/api/actions_spec.rb +18 -0
  78. data/spec/bitbucket_rest_api/api_factory_spec.rb +28 -0
  79. data/spec/bitbucket_rest_api/api_spec.rb +87 -0
  80. data/spec/bitbucket_rest_api/authorization_spec.rb +74 -0
  81. data/spec/bitbucket_rest_api/client_spec.rb +17 -0
  82. data/spec/bitbucket_rest_api/core_ext/array_spec.rb +13 -0
  83. data/spec/bitbucket_rest_api/core_ext/hash_spec.rb +47 -0
  84. data/spec/bitbucket_rest_api/deprecation_spec.rb +31 -0
  85. data/spec/bitbucket_rest_api/error/bad_events_spec.rb +11 -0
  86. data/spec/bitbucket_rest_api/error/blank_value_spec.rb +14 -0
  87. data/spec/bitbucket_rest_api/error/no_events_spec.rb +11 -0
  88. data/spec/bitbucket_rest_api/invitations_spec.rb +21 -0
  89. data/spec/bitbucket_rest_api/issues/comments_spec.rb +89 -0
  90. data/spec/bitbucket_rest_api/issues/components_spec.rb +89 -0
  91. data/spec/bitbucket_rest_api/issues/milestones_spec.rb +89 -0
  92. data/spec/bitbucket_rest_api/issues_spec.rb +91 -0
  93. data/spec/bitbucket_rest_api/normalizer_spec.rb +29 -0
  94. data/spec/bitbucket_rest_api/parameter_filter_spec.rb +42 -0
  95. data/spec/bitbucket_rest_api/repos/changesets_spec.rb +44 -0
  96. data/spec/bitbucket_rest_api/repos/commits_spec.rb +21 -0
  97. data/spec/bitbucket_rest_api/repos/components_spec.rb +43 -0
  98. data/spec/bitbucket_rest_api/repos/default_reviewers_spec.rb +65 -0
  99. data/spec/bitbucket_rest_api/repos/download_spec.rb +10 -0
  100. data/spec/bitbucket_rest_api/repos/following_spec.rb +53 -0
  101. data/spec/bitbucket_rest_api/repos/forks_spec.rb +46 -0
  102. data/spec/bitbucket_rest_api/repos/keys_spec.rb +73 -0
  103. data/spec/bitbucket_rest_api/repos/pull_request_spec.rb +283 -0
  104. data/spec/bitbucket_rest_api/repos/sources_spec.rb +78 -0
  105. data/spec/bitbucket_rest_api/repos/webhooks_spec.rb +245 -0
  106. data/spec/bitbucket_rest_api/repos_spec.rb +158 -0
  107. data/spec/bitbucket_rest_api/request/jsonize_spec.rb +19 -0
  108. data/spec/bitbucket_rest_api/request/oauth_spec.rb +26 -0
  109. data/spec/bitbucket_rest_api/request_spec.rb +88 -0
  110. data/spec/bitbucket_rest_api/response/jsonize_spec.rb +13 -0
  111. data/spec/bitbucket_rest_api/response/mashify_spec.rb +33 -0
  112. data/spec/bitbucket_rest_api/response/raise_error_spec.rb +42 -0
  113. data/spec/bitbucket_rest_api/teams_spec.rb +136 -0
  114. data/spec/bitbucket_rest_api/user_spec.rb +78 -0
  115. data/spec/bitbucket_rest_api/utils/url_spec.rb +34 -0
  116. data/spec/bitbucket_rest_api/validations/format_spec.rb +30 -0
  117. data/spec/bitbucket_rest_api/validations/presence_spec.rb +13 -0
  118. data/spec/bitbucket_rest_api/validations/required_spec.rb +44 -0
  119. data/spec/bitbucket_rest_api/validations/token_spec.rb +17 -0
  120. data/spec/bitbucket_rest_api_spec.rb +17 -0
  121. data/spec/spec_helper.rb +24 -0
  122. metadata +358 -0
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Changesets < API
4
+ REQUIRED_COMMENT_PARAMS = %w[
5
+ body
6
+ changeset_id
7
+ line
8
+ path
9
+ position
10
+ ].freeze
11
+
12
+ # List changesets on a repository
13
+ #
14
+ # = Parameters
15
+ # * <tt>:limit</tt> Optional integer. An integer representing how many changesets to return. You can specify a limit between 0 and 50.
16
+ # * <tt>:start</tt> Optional string. A hash value representing the earliest node to start with.
17
+ #
18
+ # = Examples
19
+ # bitbucket = BitBucket.new
20
+ # bitbucket.repos.changesets.list 'user-name', 'repo-name', :start => '...'
21
+ # bitbucket.repos.changesets.list 'user-name', 'repo-name', :start => '...' { |changeset| ... }
22
+ #
23
+ def list(user_name, repo_name, params = {})
24
+ _update_user_repo_params(user_name, repo_name)
25
+ _validate_user_repo_params(user, repo) unless user? && repo?
26
+ normalize! params
27
+ filter! %w[limit start], params
28
+
29
+ response = get_request("/1.0/repositories/#{user}/#{repo.downcase}/changesets", params)
30
+ return response unless block_given?
31
+
32
+ response.each { |el| yield el }
33
+ end
34
+ alias all list
35
+
36
+ # Gets a single changeset
37
+ #
38
+ # = Examples
39
+ # @bitbucket = BitBucket.new
40
+ # @bitbucket.repos.changesets.get 'user-name', 'repo-name', '6dcb09b5b57875f334f61aebed6')
41
+ #
42
+ def get(user_name, repo_name, sha, params = {})
43
+ _update_user_repo_params(user_name, repo_name)
44
+ _validate_user_repo_params(user, repo) unless user? && repo?
45
+ _validate_presence_of sha
46
+ normalize! params
47
+
48
+ get_request("/1.0/repositories/#{user}/#{repo.downcase}/changesets/#{sha}", params)
49
+ end
50
+ alias find get
51
+ end # Repos::Commits
52
+ end # BitBucket
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Commits < API
4
+ VALID_KEY_PARAM_NAMES = %w[include exclude].freeze
5
+
6
+ # Gets the commit information associated with a repository. By default, this
7
+ # call returns all the commits across all branches, bookmarks, and tags. The
8
+ # newest commit is first.
9
+ #
10
+ # = Parameters
11
+ # *<tt>include</tt> - The SHA, branch, bookmark, or tag to include, for example, v10 or master. You can repeat the parameter multiple times.
12
+ # *<tt>exclude</tt> - The SHA, branch, bookmark, or tag to exclude, for example, v10 or master . You can repeat the parameter multiple times.
13
+ #
14
+ # = Examples
15
+ # bitbucket = BitBucket.new
16
+ # bitbucket.repos.commits.list 'user-name', 'repo-name'
17
+ # bitbucket.repos.commits.list 'user-name', 'repo-name', 'master'
18
+ # bitbucket.repos.commits.list 'user-name', 'repo-name' { |key| ... }
19
+ # bitbucket.repos.commits.list 'user-name', 'repo-name', nil,
20
+ # "include" => "feature-branch",
21
+ # "exclude" => "master"
22
+ #
23
+ def list(user_name, repo_name, branchortag = nil, params = {})
24
+ _update_user_repo_params(user_name, repo_name)
25
+ _validate_user_repo_params(user, repo) unless user? && repo?
26
+ normalize! params
27
+ filter! VALID_KEY_PARAM_NAMES, params
28
+
29
+ path = "/2.0/repositories/#{user}/#{repo.downcase}/commits"
30
+ path << "/#{branchortag}" if branchortag
31
+ response = get_request(path, params)
32
+ return response unless block_given?
33
+
34
+ response.each { |el| yield el }
35
+ end
36
+ alias all list
37
+ end # Repos::Commits
38
+ end # BitBucket
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Components < API
4
+ # List components
5
+ #
6
+ # = Examples
7
+ # bitbucket = BitBucket.new
8
+ # bitbucket.repos.components.list 'user-name', 'repo-name'
9
+ # bitbucket.repos.components.list 'user-name', 'repo-name' { |component| ... }
10
+ #
11
+ def list(user_name, repo_name, params = {})
12
+ update_and_validate_user_repo_params(user_name, repo_name)
13
+ normalize! params
14
+
15
+ response = get_request("/2.0/repositories/#{user}/#{repo.downcase}/components", params)
16
+ return response['values'] unless block_given?
17
+
18
+ response['values'].each { |el| yield el }
19
+ end
20
+ alias all list
21
+
22
+ # Get a component by it's ID
23
+ #
24
+ # = Examples
25
+ # bitbucket = BitBucket.new
26
+ # bitbucket.repos.components.get 'user-name', 'repo-name', 1
27
+ #
28
+ def get(user_name, repo_name, component_id, params = {})
29
+ update_and_validate_user_repo_params(user_name, repo_name)
30
+ normalize! params
31
+
32
+ get_request("/2.0/repositories/#{user}/#{repo.downcase}/components/#{component_id}", params)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::DefaultReviewers < API
4
+ # List default reviewers
5
+ #
6
+ # = Examples
7
+ # bitbucket = BitBucket.new
8
+ # bitbucket.repos.default_reviewers.list 'user-name', 'repo-name'
9
+ # bitbucket.repos.default_reviewers.list 'user-name', 'repo-name' { |reviewer| ... }
10
+ #
11
+ def list(user_name, repo_name, params = {})
12
+ update_and_validate_user_repo_params(user_name, repo_name)
13
+ normalize! params
14
+
15
+ response = get_request("/2.0/repositories/#{user_name}/#{repo_name}/default-reviewers", params)
16
+ return response unless block_given?
17
+
18
+ response.each { |el| yield el }
19
+ end
20
+ alias all list
21
+
22
+ # Get a default reviewer's info
23
+ #
24
+ # = Examples
25
+ # bitbucket = BitBucket.new
26
+ # bitbucket.repos.default_reviewers.get 'user-name', 'repo-name', 'reviewer-username'
27
+ #
28
+ def get(user_name, repo_name, reviewer_username, params = {})
29
+ update_and_validate_user_repo_params(user_name, repo_name)
30
+ normalize! params
31
+
32
+ get_request("/2.0/repositories/#{user_name}/#{repo_name}/default-reviewers/#{reviewer_username}", params)
33
+ end
34
+
35
+ # Add a user to the default-reviewers list for the repo
36
+ #
37
+ # = Examples
38
+ # bitbucket = BitBucket.new
39
+ # bitbucket.repos.default_reviewers.add 'user-name', 'repo-name', 'reviewer-username'
40
+ #
41
+ def add(user_name, repo_name, reviewer_username, params = {})
42
+ update_and_validate_user_repo_params(user_name, repo_name)
43
+ normalize! params
44
+
45
+ put_request("/2.0/repositories/#{user_name}/#{repo_name}/default-reviewers/#{reviewer_username}", params)
46
+ end
47
+
48
+ # Remove a user from the default-reviewers list for the repo
49
+ #
50
+ # = Examples
51
+ # bitbucket = BitBucket.new
52
+ # bitbucket.repos.default_reviewers.remove 'user-name', 'repo-name', 'reviewer-username'
53
+ #
54
+ def remove(user_name, repo_name, reviewer_username, params = {})
55
+ update_and_validate_user_repo_params(user_name, repo_name)
56
+ normalize! params
57
+ delete_request("/2.0/repositories/#{user_name}/#{repo_name}/default-reviewers/#{reviewer_username}", params)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Download < API
4
+ REQUIRED_KEY_PARAM_NAMES = %w[commit_hash].freeze
5
+ def get(user_name, repo_name, params = {})
6
+ _update_user_repo_params(user_name, repo_name)
7
+ _validate_user_repo_params(user, repo) unless user? && repo?
8
+ # normalize! params
9
+ # assert_required_keys(REQUIRED_KEY_PARAM_NAMES, params)
10
+
11
+ # https://bitbucket.org/jhanley85/eternum_canvas_demo/get/fd931f96f12d.zip
12
+ "https://bitbucket.org/#{user}/#{repo.downcase}/get/#{params[:commit_hash]}.tar.gz"
13
+ end
14
+ end # Repos::Keys
15
+ end # BitBucket
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Following < API
4
+ # List repo followers
5
+ #
6
+ # = Examples
7
+ # bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
8
+ # bitbucket.repos.following.followers
9
+ # bitbucket.repos.following.followers { |watcher| ... }
10
+ #
11
+ def followers(user_name, repo_name, params = {})
12
+ _update_user_repo_params(user_name, repo_name)
13
+ _validate_user_repo_params(user, repo) unless user? && repo?
14
+ normalize! params
15
+
16
+ response = get_request("/1.0/repositories/#{user}/#{repo.downcase}/followers/", params)
17
+ return response unless block_given?
18
+
19
+ response.each { |el| yield el }
20
+ end
21
+
22
+ # List repos being followed by the authenticated user
23
+ #
24
+ # = Examples
25
+ # bitbucket = BitBucket.new :oauth_token => '...', :oauth_secret => '...'
26
+ # bitbucket.repos.following.followed
27
+ #
28
+ def followed(*args)
29
+ params = args.extract_options!
30
+ normalize! params
31
+
32
+ response = get_request('/1.0/user/follows', params)
33
+ return response unless block_given?
34
+
35
+ response.each { |el| yield el }
36
+ end
37
+ end # Repos::Watching
38
+ end # BitBucket
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Forks < API
4
+ REQUIRED_KEY_PARAM_NAMES = %w[name].freeze
5
+ DEFAULT_REPO_OPTIONS = {
6
+ 'website' => '',
7
+ 'is_private' => false,
8
+ 'has_issues' => false,
9
+ 'has_wiki' => false,
10
+ 'scm' => 'git',
11
+ 'no_public_forks' => false
12
+ }.freeze
13
+
14
+ VALID_REPO_OPTIONS = %w[
15
+ owner
16
+ name
17
+ description
18
+ website
19
+ is_private
20
+ has_issues
21
+ has_wiki
22
+ no_public_forks
23
+ language
24
+ scm
25
+ ].freeze
26
+
27
+ # List forks of a repo
28
+ #
29
+ # = Examples
30
+ # bitbucket = BitBucket.new
31
+ # bitbucket.repos.forks.list 'user-name', 'repo-name'
32
+ # bitbucket.repos.forks.list 'user-name', 'repo-name' { |fork| ... }
33
+ #
34
+ def list(user_name, repo_name, params = {})
35
+ _update_user_repo_params(user_name, repo_name)
36
+ _validate_user_repo_params(user, repo) unless user? && repo?
37
+ normalize! params
38
+
39
+ response = get_request("/2.0/repositories/#{user}/#{repo.downcase}/forks/", params)
40
+ return response unless block_given?
41
+
42
+ response.each { |el| yield el }
43
+ end
44
+ alias all list
45
+
46
+ # Create a fork
47
+ #
48
+ # = Inputs
49
+ # * <tt>:type</tt> - One of the supported services. The type is a case-insensitive value.
50
+ #
51
+ # = Examples
52
+ # bitbucket = BitBucket.new
53
+ # bitbucket.repos.forks.create 'user-name', 'repo-name',
54
+ # "name" => "Basecamp",
55
+ #
56
+ def create(user_name, repo_name, params = {})
57
+ _update_user_repo_params(user_name, repo_name)
58
+ _validate_user_repo_params(user, repo) unless user? && repo?
59
+ normalize! params
60
+ assert_required_keys(REQUIRED_KEY_PARAM_NAMES, params)
61
+ filter! VALID_REPO_OPTIONS, params
62
+
63
+ post_request("/1.0/repositories/#{user}/#{repo.downcase}/fork", params)
64
+ end
65
+ end # Repos::Keys
66
+ end # BitBucket
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::Keys < API
4
+ VALID_KEY_PARAM_NAMES = %w[label key].freeze
5
+
6
+ # List deploy keys
7
+ #
8
+ # = Examples
9
+ # bitbucket = BitBucket.new
10
+ # bitbucket.repos.keys.list 'user-name', 'repo-name'
11
+ # bitbucket.repos.keys.list 'user-name', 'repo-name' { |key| ... }
12
+ #
13
+ def list(user_name, repo_name, params = {})
14
+ _update_user_repo_params(user_name, repo_name)
15
+ _validate_user_repo_params(user, repo) unless user? && repo?
16
+ normalize! params
17
+
18
+ response = get_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/", params)
19
+ return response unless block_given?
20
+
21
+ response.each { |el| yield el }
22
+ end
23
+ alias all list
24
+
25
+ # Create a key
26
+ #
27
+ # = Inputs
28
+ # * <tt>:title</tt> - Required string.
29
+ # * <tt>:key</tt> - Required string.
30
+ #
31
+ # = Examples
32
+ # bitbucket = BitBucket.new
33
+ # bitbucket.repos.keys.create 'user-name', 'repo-name',
34
+ # "label" => "octocat@octomac",
35
+ # "key" => "ssh-rsa AAA..."
36
+ #
37
+ def create(user_name, repo_name, params = {})
38
+ _update_user_repo_params(user_name, repo_name)
39
+ _validate_user_repo_params(user, repo) unless user? && repo?
40
+ normalize! params
41
+ filter! VALID_KEY_PARAM_NAMES, params
42
+ assert_required_keys(VALID_KEY_PARAM_NAMES, params)
43
+
44
+ options = { headers: { 'Content-Type' => 'application/json' } }
45
+ post_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/", params, options)
46
+ end
47
+
48
+ # Edit a key
49
+ #
50
+ # = Inputs
51
+ # * <tt>:title</tt> - Required string.
52
+ # * <tt>:key</tt> - Required string.
53
+ #
54
+ # = Examples
55
+ # bitbucket = BitBucket.new
56
+ # bitbucket.repos.keys.edit 'user-name', 'repo-name',
57
+ # "label" => "octocat@octomac",
58
+ # "key" => "ssh-rsa AAA..."
59
+ #
60
+ def edit(user_name, repo_name, key_id, params = {})
61
+ _update_user_repo_params(user_name, repo_name)
62
+ _validate_user_repo_params(user, repo) unless user? && repo?
63
+ _validate_presence_of key_id
64
+
65
+ normalize! params
66
+ filter! VALID_KEY_PARAM_NAMES, params
67
+
68
+ put_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/#{key_id}", params)
69
+ end
70
+
71
+ # Delete key
72
+ #
73
+ # = Examples
74
+ # @bitbucket = BitBucket.new
75
+ # @bitbucket.repos.keys.delete 'user-name', 'repo-name', 'key-id'
76
+ #
77
+ def delete(user_name, repo_name, key_id, params = {})
78
+ _update_user_repo_params(user_name, repo_name)
79
+ _validate_user_repo_params(user, repo) unless user? && repo?
80
+ _validate_presence_of key_id
81
+ normalize! params
82
+
83
+ delete_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/#{key_id}", params)
84
+ end
85
+ end # Repos::Keys
86
+ end # BitBucket
@@ -0,0 +1,158 @@
1
+ # frozen_string_literal: true
2
+ module BitBucket
3
+ class Repos::PullRequest < API
4
+ # List pull requests
5
+ #
6
+ # = Examples
7
+ # bitbucket = BitBucket.new
8
+ # bitbucket.repos.pull_request.list 'user-name', 'repo-name'
9
+ # bitbucket.repos.pull_request.list 'user-name', 'repo-name' { |status| ... }
10
+ #
11
+ def list(user_name, repo_name, params = {})
12
+ _update_user_repo_params(user_name, repo_name)
13
+ _validate_user_repo_params(user, repo) unless user? && repo?
14
+ normalize! params
15
+
16
+ response = get_request("/2.0/repositories/#{user}/#{repo.downcase}/pullrequests", params)
17
+ return response unless block_given?
18
+
19
+ response.each { |el| yield el }
20
+ end
21
+ alias all list
22
+
23
+ # List pull request participants
24
+ #
25
+ # = Examples
26
+ # bitbucket = BitBucket.new
27
+ # bitbucket.repos.pull_request.list 'user-name', 'repo-name'
28
+ # bitbucket.repos.pull_request.list 'user-name', 'repo-name' { |status| ... }
29
+ #
30
+ def participants(user_name, repo_name, pull_request_id, params = {})
31
+ _update_user_repo_params(user_name, repo_name)
32
+ _validate_user_repo_params(user, repo) unless user? && repo?
33
+ normalize! params
34
+
35
+ response = get_request("/1.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/participants", params)
36
+ return response unless block_given?
37
+
38
+ response.each { |el| yield el }
39
+ end
40
+
41
+ def get(user_name, repo_name, pull_request_id, params = {})
42
+ _update_user_repo_params(user_name, repo_name)
43
+ _validate_user_repo_params(user, repo) unless user? && repo?
44
+ normalize! params
45
+
46
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}", params)
47
+ return response unless block_given?
48
+ end
49
+
50
+ def create(user_name, repo_name, params = {})
51
+ _update_user_repo_params(user_name, repo_name)
52
+ _validate_user_repo_params(user, repo) unless user? && repo?
53
+ normalize! params
54
+
55
+ response = request(:post, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests", params)
56
+ return response unless block_given?
57
+ end
58
+
59
+ def update(user_name, repo_name, pull_request_id, params = {})
60
+ _update_user_repo_params(user_name, repo_name)
61
+ _validate_user_repo_params(user, repo) unless user? && repo?
62
+ normalize! params
63
+
64
+ response = request(:put, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}", params)
65
+ return response unless block_given?
66
+ end
67
+
68
+ def commits(user_name, repo_name, pull_request_id, params = {})
69
+ _update_user_repo_params(user_name, repo_name)
70
+ _validate_user_repo_params(user, repo) unless user? && repo?
71
+ normalize! params
72
+
73
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/commits", params)
74
+ return response unless block_given?
75
+ end
76
+
77
+ def approve(user_name, repo_name, pull_request_id, params = {})
78
+ _update_user_repo_params(user_name, repo_name)
79
+ _validate_user_repo_params(user, repo) unless user? && repo?
80
+ normalize! params
81
+
82
+ response = request(:post, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/approve", params)
83
+ return response unless block_given?
84
+ end
85
+
86
+ def delete_approval(user_name, repo_name, pull_request_id, params = {})
87
+ _update_user_repo_params(user_name, repo_name)
88
+ _validate_user_repo_params(user, repo) unless user? && repo?
89
+ normalize! params
90
+
91
+ response = request(:delete, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/approve", params)
92
+ return response unless block_given?
93
+ end
94
+
95
+ def diff(user_name, repo_name, pull_request_id, params = {})
96
+ _update_user_repo_params(user_name, repo_name)
97
+ _validate_user_repo_params(user, repo) unless user? && repo?
98
+ normalize! params
99
+
100
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/diff", params)
101
+ return response unless block_given?
102
+ end
103
+
104
+ def all_activity(user_name, repo_name, params = {})
105
+ _update_user_repo_params(user_name, repo_name)
106
+ _validate_user_repo_params(user, repo) unless user? && repo?
107
+ normalize! params
108
+
109
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/activity", params)
110
+ return response unless block_given?
111
+ end
112
+
113
+ def activity(user_name, repo_name, pull_request_id, params = {})
114
+ _update_user_repo_params(user_name, repo_name)
115
+ _validate_user_repo_params(user, repo) unless user? && repo?
116
+ normalize! params
117
+
118
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/activity", params)
119
+ return response unless block_given?
120
+ end
121
+
122
+ def merge(user_name, repo_name, pull_request_id, params = {})
123
+ _update_user_repo_params(user_name, repo_name)
124
+ _validate_user_repo_params(user, repo) unless user? && repo?
125
+ normalize! params
126
+
127
+ response = request(:post, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/merge", params)
128
+ return response unless block_given?
129
+ end
130
+
131
+ def decline(user_name, repo_name, pull_request_id, params = {})
132
+ _update_user_repo_params(user_name, repo_name)
133
+ _validate_user_repo_params(user, repo) unless user? && repo?
134
+ normalize! params
135
+
136
+ response = request(:post, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/decline", params)
137
+ return response unless block_given?
138
+ end
139
+
140
+ def comments(user_name, repo_name, pull_request_id, params = {})
141
+ _update_user_repo_params(user_name, repo_name)
142
+ _validate_user_repo_params(user, repo) unless user? && repo?
143
+ normalize! params
144
+
145
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/comments", params)
146
+ return response unless block_given?
147
+ end
148
+
149
+ def comment(user_name, repo_name, pull_request_id, comment_id, params = {})
150
+ _update_user_repo_params(user_name, repo_name)
151
+ _validate_user_repo_params(user, repo) unless user? && repo?
152
+ normalize! params
153
+
154
+ response = request(:get, "/2.0/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/comments/#{comment_id}", params)
155
+ return response unless block_given?
156
+ end
157
+ end # Repos::Keys
158
+ end # BitBucket