reenhanced_bitbucket_api 0.3.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1a895c33b9ba283852dbf0d5af066a2acbaa05f
4
- data.tar.gz: 9773125535fa33ff8f10a20a3b379b7615701e7c
3
+ metadata.gz: f2178492c596e3ffcfb3b03ef8e73b137953f901
4
+ data.tar.gz: cd635c715d33fe9253d3a568b935102fd029f99d
5
5
  SHA512:
6
- metadata.gz: 8fd84a1de59f109e782b11f6b0839555a2cf93f452ee7342642e2bb6a9a43c407354f044d2ee50c50a5dae37984d135b0c87533213781b3defb863ea1cd0d537
7
- data.tar.gz: 6456a8bbe344e0856f392c1e90cc7deec072d5a8dead1c7a8c039a8537249edc149d5b6706136e29c0f9dd803b94891c9166c36a6d16d2488b1a464220e2c7dd
6
+ metadata.gz: d22c626f262033048a2343df7ac90d418b4b8a04d5101b24cd5c65494aa186dd1660ede36b21e69bbf49ff6990d0bcc5c31b39c960cb26c2b6d541903dc6c3a3
7
+ data.tar.gz: c89b629dcdaa899a8bf3de1cf9c5a55afe695e14d113bc889dc59d1669b484662ecd84fea237532c03fc7c263ce81c21baaca964889e9e49ef26fdcd226172d4
@@ -58,7 +58,7 @@ module BitBucket
58
58
  options = BitBucket.configuration.fetch.merge(options)
59
59
  self.current_options = options
60
60
  if self.class.instance_variable_get('@version') == '2.0'
61
- options[:endpoint] = BitBucket.endpoint.gsub(/\/api\/[0-9.]+/, "/api/2.0")
61
+ options[:endpoint] = BitBucket.endpoint_v2
62
62
  end
63
63
  BitBucket.configuration.property_names.each do |key|
64
64
  send("#{key}=", options[key])
@@ -10,10 +10,11 @@ module BitBucket
10
10
  # bitbucket = BitBucket.new
11
11
  # bitbucket.repos.pull_requests.comments.all 'user-name', 'repo-name', 'pull-request-id'
12
12
  #
13
- def list(user_name, repo_name, pull_request_id)
14
- _update_user_repo_params(user_name, repo_name)
15
- _validate_user_repo_params(user, repo) unless user? && repo?
16
- _validate_presence_of pull_request_id
13
+ def list(*args)
14
+ arguments(args, required: [:user, :repo, :pull_request_id])
15
+ user = arguments.user
16
+ repo = arguments.repo
17
+ pull_request_id = arguments.pull_request_id
17
18
 
18
19
  response = get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/comments")
19
20
  return response unless block_given?
@@ -27,11 +28,12 @@ module BitBucket
27
28
  # @bitbucket = BitBucket.new
28
29
  # @bitbucket.repos.pull_requests.comments.get 'user-name', 'repo-name', 'pull-request-id')
29
30
  #
30
- def get(user_name, repo_name, pull_request_id, comment_id)
31
- _update_user_repo_params(user_name, repo_name)
32
- _validate_user_repo_params(user, repo) unless user? && repo?
33
- _validate_presence_of pull_request_id
34
- _validate_presence_of comment_id
31
+ def get(*args)
32
+ arguments(args, required: [:user, :repo, :pull_request_id, :comment_id])
33
+ user = arguments.user
34
+ repo = arguments.repo
35
+ pull_request_id = arguments.pull_request_id
36
+ comment_id = arguments.comment_id
35
37
 
36
38
  get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/comments/#{comment_id}")
37
39
  end
@@ -6,8 +6,12 @@ module BitBucket
6
6
  # Load all the modules after initializing Repos to avoid superclass mismatch
7
7
  require_all 'bitbucket_rest_api/client/repos/pull_requests',
8
8
  'comments',
9
- 'commits',
10
- 'activity'
9
+ 'commits'
10
+
11
+ REQUIRED_PULL_REQUEST_OPTIONS = %w[
12
+ title
13
+ source
14
+ ]
11
15
 
12
16
  VALID_PULL_REQUEST_PARAM_NAMES = %w[
13
17
  title
@@ -34,17 +38,16 @@ module BitBucket
34
38
  # <tt>:state</tt> - Optional - State of the pull request (OPEN, MERGED, DECLINED)
35
39
  #
36
40
  def list(*args)
37
- args = { user: self.user, repo: self.repo.downcase, state: 'OPEN'}.merge(Hash[*args])
38
- #_update_user_repo_params(user_name, repo_name)
39
- #_validate_user_repo_params(user, repo) unless user? && repo?
40
- params = arguments([args], required: [:user, :repo]) do
41
- assert_values VALID_PULL_REQUEST_STATE_VALUES
42
- end.params
41
+ arguments(args, required: [:user, :repo], optional: [:state])
42
+ params = arguments.params
43
+ user = arguments.user
44
+ repo = arguments.repo
43
45
 
46
+ params['state'] ||= 'OPEN'
44
47
  # Bitbucket requires the state to be all caps or it returns all
45
- params['state'] = params['state'].upcase
48
+ params['state'] = params['state'].upcase
46
49
 
47
- response = get_request("/repositories/#{args[:user]}/#{args[:repo]}/pullrequests", params)
50
+ response = get_request("/repositories/#{user}/#{repo}/pullrequests/", params)
48
51
 
49
52
  return response unless block_given?
50
53
  response.each { |el| yield el }
@@ -57,14 +60,10 @@ module BitBucket
57
60
  # bitbucket = BitBucket.new
58
61
  # bitbucket.repos.pull_requests.find 'user-name', 'repo-name', 'pull-request-id'
59
62
  #
60
- def get(user_name, repo_name, pull_request_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 pull_request_id
63
+ def get(*args)
64
+ arguments(args, required: [:user, :repo, :pull_request_id])
64
65
 
65
- normalize! params
66
-
67
- get_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}", params)
66
+ get_request("/repositories/#{arguments.user}/#{arguments.repo.downcase}/pullrequests/#{arguments.pull_request_id}", arguments.params)
68
67
  end
69
68
 
70
69
  alias :find :get
@@ -82,8 +81,8 @@ module BitBucket
82
81
  # * <tt>[{ "username": "accountname" }]</tt>
83
82
  #
84
83
  # = Examples
85
- # bitbucket = BitBucket.new :user => 'user-name', :repo => 'repo-name'
86
- # bitbucket.repos.pull_requests.create
84
+ # bitbucket = BitBucket.new
85
+ # bitbucket.repos.pull_requests.create 'user-name', 'repo-name',
87
86
  # "title" => "Fixes a bug",
88
87
  # "description" => "Fixes not being able to see anything.",
89
88
  # "source" => { "branch" => { "name" => "bug-fixes" } },
@@ -91,15 +90,13 @@ module BitBucket
91
90
  # "reviewers" => [ { "username" => "octocat" } ],
92
91
  # "close_source_branch" => true
93
92
  #
94
- def create(user_name, repo_name, params={})
95
- _update_user_repo_params(user_name, repo_name)
96
- _validate_user_repo_params(user, repo) unless user? && repo?
97
-
98
- normalize! params
99
- filter! VALID_PULL_REQUEST_PARAM_NAMES , params
100
- assert_required_keys(%w[ title source ], params)
93
+ def create(*args)
94
+ arguments(args, required: [:user, :repo]) do
95
+ permit VALID_PULL_REQUEST_PARAM_NAMES
96
+ assert_required REQUIRED_PULL_REQUEST_OPTIONS
97
+ end
101
98
 
102
- post_request("/repositories/#{user}/#{repo.downcase}/pullrequests/", params)
99
+ post_request("/repositories/#{arguments.user}/#{arguments.repo.downcase}/pullrequests", arguments.params)
103
100
  end
104
101
 
105
102
  # Edit a pull request
@@ -121,13 +118,17 @@ module BitBucket
121
118
  # "reviewers" => [ { "username" => "octocat" } ],
122
119
  # "close_source_branch" => true
123
120
  #
124
- def update(user_name, repo_name, pull_request_id, params={})
125
- _update_user_repo_params(user_name, repo_name)
126
- _validate_user_repo_params(user, repo) unless user? && repo?
127
- _validate_presence_of pull_request_id
121
+ def update(*args)
122
+ arguments(args, required: [:user, :repo, :pull_request_id]) do
123
+ permit VALID_PULL_REQUEST_PARAM_NAMES
124
+ end
125
+
126
+ user = arguments.user
127
+ repo = arguments.repo
128
+ pull_request_id = arguments.pull_request_id
128
129
 
129
130
  # BitBucket will drop any data if it is not included, so we have to check for pre-existing data
130
- existing_pull = get(user_name, repo_name, pull_request_id)
131
+ existing_pull = get(user, repo, pull_request_id)
131
132
  existing_pull_data = {
132
133
  'title' => existing_pull.title,
133
134
  'description' => existing_pull.description,
@@ -137,10 +138,7 @@ module BitBucket
137
138
  'reviewers' => existing_pull.reviewers,
138
139
  'close_source_branch' => existing_pull.close_source_branch
139
140
  }
140
- params = normalize!(existing_pull_data).merge!(normalize!(params))
141
-
142
- filter! VALID_PULL_REQUEST_PARAM_NAMES.reject{|param| param == 'source'}, params
143
- assert_required_keys(%w[ title ], params)
141
+ params = normalize!(existing_pull_data).merge!(normalize!(arguments.params))
144
142
 
145
143
  put_request("/repositories/#{user}/#{repo.downcase}/pullrequests/#{pull_request_id}/", params)
146
144
  end
@@ -153,11 +151,9 @@ module BitBucket
153
151
  # bitbucket.repos.pull_requests.reject 'user-name', 'repo-name', 'pull-request-id'
154
152
  #
155
153
  def decline(user_name, repo_name, pull_request_id)
156
- _update_user_repo_params(user_name, repo_name)
157
- _validate_user_repo_params(user, repo) unless user? && repo?
158
- _validate_presence_of pull_request_id
154
+ arguments(args, required: [:user, :repo, :pull_request_id])
159
155
 
160
- post_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/decline")
156
+ post_request("/repositories/#{arguments.user}/#{arguments.repo}/pullrequests/#{arguments.pull_request_id}/decline")
161
157
  end
162
158
  alias :reject :decline
163
159
 
@@ -168,11 +164,9 @@ module BitBucket
168
164
  # bitbucket.repos.pull_requests.approve 'user-name', 'repo-name', 'pull-request-id'
169
165
  #
170
166
  def approve(user_name, repo_name, pull_request_id)
171
- _update_user_repo_params(user_name, repo_name)
172
- _validate_user_repo_params(user, repo) unless user? && repo?
173
- _validate_presence_of pull_request_id
167
+ arguments(args, required: [:user, :repo, :pull_request_id])
174
168
 
175
- post_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/approve")
169
+ post_request("/repositories/#{arguments.user}/#{arguments.repo}/pullrequests/#{arguments.pull_request_id}/approve")
176
170
  end
177
171
 
178
172
  # Get the diff for a pull request
@@ -182,11 +176,9 @@ module BitBucket
182
176
  # bitbucket.repos.pull_requests.diff 'user-name', 'repo-name', 'pull-request-id'
183
177
  #
184
178
  def diff(user_name, repo_name, pull_request_id)
185
- _update_user_repo_params(user_name, repo_name)
186
- _validate_user_repo_params(user, repo) unless user? && repo?
187
- _validate_presence_of pull_request_id
179
+ arguments(args, required: [:user, :repo, :pull_request_id])
188
180
 
189
- get_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/diff")
181
+ get_request("/repositories/#{arguments.user}/#{arguments.repo}/pullrequests/#{arguments.pull_request_id}/diff")
190
182
  end
191
183
 
192
184
  # Get a log of all activity for a pull request
@@ -195,11 +187,13 @@ module BitBucket
195
187
  # bitbucket = BitBucket.new
196
188
  # bitbucket.repos.pull_requests.activity 'user-name', 'repo-name'
197
189
  #
198
- def activity(user_name, repo_name)
199
- _update_user_repo_params(user_name, repo_name)
200
- _validate_user_repo_params(user, repo) unless user? && repo?
190
+ def activity(*args)
191
+ arguments(args, required: [:user, :repo, :pull_request_id])
192
+
193
+ response = get_request("/repositories/#{arguments.user}/#{arguments.repo}/pullrequests/#{arguments.pull_request_id}/activity")
201
194
 
202
- get_request("/repositories/#{user}/#{repo}/pullrequests/activity")
195
+ return response unless block_given?
196
+ response.each { |el| yield el }
203
197
  end
204
198
  end # Repos::PullRequests
205
199
  end # BitBucket
@@ -32,6 +32,7 @@ module BitBucket
32
32
 
33
33
  # The endpoint used to connect to BitBucket if none is set, in the event that BitBucket is ever available on location
34
34
  property :endpoint, default: 'https://bitbucket.org/api/1.0'.freeze
35
+ property :endpoint_v2, default: 'https://api.bitbucket.org/2.0'.freeze
35
36
 
36
37
  # The value sent in the http header for 'User-Agent' if none is set
37
38
  property :user_agent, default: "BitBucket Ruby Gem #{BitBucket::VERSION::STRING}".freeze
@@ -11,11 +11,11 @@ module BitBucket
11
11
  def self.default(options = {})
12
12
  api = options[:api]
13
13
  proc do |builder|
14
- builder.use Faraday::Request::Multipart
14
+ builder.use BitBucket::Request::Jsonize
15
15
  builder.use Faraday::Request::UrlEncoded
16
- builder.use FaradayMiddleware::OAuth, {:consumer_key => api.client_id, :consumer_secret => api.client_secret, :token => api.oauth_token, :token_secret => api.oauth_secret} if api.client_id? and api.client_secret?
16
+ builder.use Faraday::Request::Multipart
17
+ builder.use BitBucket::Request::OAuth, {:consumer_key => api.client_id, :consumer_secret => api.client_secret, :token => api.oauth_token, :token_secret => api.oauth_secret} if api.client_id? and api.client_secret?
17
18
  builder.use BitBucket::Request::BasicAuth, api.authentication if api.basic_authed?
18
- builder.use FaradayMiddleware::EncodeJson
19
19
 
20
20
  builder.use Faraday::Response::Logger if ENV['DEBUG']
21
21
  #builder.use BitBucket::Response::Helpers
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
-
3
2
  module BitBucket
4
3
 
5
4
  # A module that decorates response with pagination helpers
@@ -7,7 +6,7 @@ module BitBucket
7
6
  include BitBucket::Constants
8
7
 
9
8
  def paginated?
10
- body.is_a?(Hash) and body[PARAM_PAGE].nil?
9
+ body.is_a?(Hash) and !body[PARAM_PAGE].nil?
11
10
  end
12
11
 
13
12
  # Return page links
@@ -22,10 +21,10 @@ module BitBucket
22
21
  # instances or just per given request.
23
22
  #
24
23
  def auto_paginate(auto=false)
25
- if (current_api.auto_pagination? || auto)
24
+ if paginated? and (current_api.auto_pagination? || auto)
26
25
  resources_bodies = []
27
26
  each_page do |resource|
28
- if resource.body.respond_to?(:values)
27
+ if resource.body.respond_to?(:values) and resource.body[:values]
29
28
  resources_bodies += resource.body[:values].collect {|value| ::Hashie::Mash.new(value) }
30
29
  else
31
30
  resources_bodies += Array(resource.body)
@@ -4,7 +4,7 @@ module BitBucket
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 3
7
- PATCH = 0
7
+ PATCH = 1
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reenhanced_bitbucket_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Cochran
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-16 00:00:00.000000000 Z
12
+ date: 2015-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
@@ -158,7 +158,6 @@ files:
158
158
  - lib/bitbucket_rest_api/client/repos/following.rb
159
159
  - lib/bitbucket_rest_api/client/repos/keys.rb
160
160
  - lib/bitbucket_rest_api/client/repos/pull_requests.rb
161
- - lib/bitbucket_rest_api/client/repos/pull_requests/activity.rb
162
161
  - lib/bitbucket_rest_api/client/repos/pull_requests/comments.rb
163
162
  - lib/bitbucket_rest_api/client/repos/pull_requests/commits.rb
164
163
  - lib/bitbucket_rest_api/client/repos/services.rb
@@ -239,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
238
  version: '0'
240
239
  requirements: []
241
240
  rubyforge_project:
242
- rubygems_version: 2.4.3
241
+ rubygems_version: 2.4.6
243
242
  signing_key:
244
243
  specification_version: 4
245
244
  summary: Ruby wrapper for the BitBucket API supporting OAuth and Basic Authentication
@@ -1,22 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module BitBucket
4
- class Client::Repos::PullRequests::Activity < API
5
- @version = '2.0'
6
-
7
- # Get the activity for a pull request
8
- #
9
- # = Examples
10
- # bitbucket = BitBucket.new
11
- # bitbucket.repos.pull_requests.activity 'user-name', 'repo-name', 'pull-request-id'
12
- #
13
- def list(user_name, repo_name, pull_request_id)
14
- _update_user_repo_params(user_name, repo_name)
15
- _validate_user_repo_params(user, repo) unless user? && repo?
16
- _validate_presence_of pull_request_id
17
-
18
- get_request("/repositories/#{user}/#{repo}/pullrequests/#{pull_request_id}/activity")
19
- end
20
- alias :all :list
21
- end
22
- end