From 7028a6d17aa9b746f81e514e0614e269632fb575 Mon Sep 17 00:00:00 2001 From: Ben Sales Date: Thu, 7 Jul 2016 16:14:21 +0200 Subject: [PATCH 1/2] Use the 2.0 version of the Bitbucket API for repository lists - this gives us the extra parameter of role, allowing us to filter the repository list by whether a user is an owner, contributor etc --- lib/bitbucket_rest_api/repos.rb | 17 ++++++++--------- spec/bitbucket_rest_api/repos_spec.rb | 6 +++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/lib/bitbucket_rest_api/repos.rb b/lib/bitbucket_rest_api/repos.rb index e9a62a1..a96d582 100644 --- a/lib/bitbucket_rest_api/repos.rb +++ b/lib/bitbucket_rest_api/repos.rb @@ -228,20 +228,19 @@ def delete(user_name, repo_name) # # = Examples # bitbucket = BitBucket.new - # bitbucket.repos.list :user => 'user-name' + # bitbucket.repos.list :user => 'user-name', :role => 'owner' # bitbucket.repos.list :user => 'user-name', { |repo| ... } def list(*args) params = args.extract_options! normalize! params _merge_user_into_params!(params) unless params.has_key?('user') - filter! %w[ user type ], params - - response = #if (user_name = params.delete("user")) - # get_request("/1.0/users/#{user_name}", params) - #else - # For authenticated user - get_request("/1.0/user/repositories", params) - #end + params.merge!('pagelen' => 100) unless params.has_key?('pagelen') + + filter! %w[ user role pagelen ], params + + response = get_request("/2.0/repositories", params) + + response = response[:values] return response unless block_given? response.each { |el| yield el } end diff --git a/spec/bitbucket_rest_api/repos_spec.rb b/spec/bitbucket_rest_api/repos_spec.rb index 822e02d..e48b66a 100644 --- a/spec/bitbucket_rest_api/repos_spec.rb +++ b/spec/bitbucket_rest_api/repos_spec.rb @@ -100,10 +100,10 @@ before do expect(repo).to receive(:request).with( :get, - '/1.0/user/repositories', - {}, + '/2.0/repositories', + {"pagelen" => 100}, {} - ).and_return(['repo1', 'repo2' ,'repo3']) + ).and_return(values: ['repo1', 'repo2' ,'repo3']) end # FIXME: this method belongs in the User class! From 6c725f45e2fef11eac55e1c7635cb75a0d0e7fa2 Mon Sep 17 00:00:00 2001 From: Ben Sales Date: Thu, 21 Jul 2016 17:38:11 +0200 Subject: [PATCH 2/2] Don't downcase the repo name, as we might be passing a URI encoded UUID instead. --- lib/bitbucket_rest_api/repos/keys.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/bitbucket_rest_api/repos/keys.rb b/lib/bitbucket_rest_api/repos/keys.rb index c95de0d..91ef747 100644 --- a/lib/bitbucket_rest_api/repos/keys.rb +++ b/lib/bitbucket_rest_api/repos/keys.rb @@ -17,7 +17,7 @@ def list(user_name, repo_name, params={}) _validate_user_repo_params(user, repo) unless user? && repo? normalize! params - response = get_request("/1.0/repositories/#{user}/#{repo.downcase}/deploy-keys/", params) + response = get_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/", params) return response unless block_given? response.each { |el| yield el } end @@ -43,7 +43,7 @@ def create(user_name, repo_name, params={}) assert_required_keys(VALID_KEY_PARAM_NAMES, params) options = { headers: { "Content-Type" => "application/json" } } - post_request("/1.0/repositories/#{user}/#{repo.downcase}/deploy-keys/", params, options) + post_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/", params, options) end # Edit a key @@ -66,7 +66,7 @@ def edit(user_name, repo_name, key_id, params={}) normalize! params filter! VALID_KEY_PARAM_NAMES, params - put_request("/1.0/repositories/#{user}/#{repo.downcase}/deploy-keys/#{key_id}", params) + put_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/#{key_id}", params) end # Delete key @@ -81,7 +81,7 @@ def delete(user_name, repo_name, key_id, params={}) _validate_presence_of key_id normalize! params - delete_request("/1.0/repositories/#{user}/#{repo.downcase}/deploy-keys/#{key_id}", params) + delete_request("/1.0/repositories/#{user}/#{repo}/deploy-keys/#{key_id}", params) end end # Repos::Keys