diff options
author | Robert Speicher <robert@gitlab.com> | 2015-07-28 21:57:44 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2015-07-28 21:57:44 +0000 |
commit | 0f77d4095e39acb6ac35135194fb80245b35cba0 (patch) | |
tree | 323ef18109e2fed874c84aa0e1849d6b3ed53230 /lib | |
parent | f8bfd065aa010955e9435347cb92b92006f0d5bf (diff) | |
parent | 42ebd902de707c8ddc35b97983ec0eee16458e56 (diff) | |
download | gitlab-ce-0f77d4095e39acb6ac35135194fb80245b35cba0.tar.gz |
Merge branch 'bitbucket-re-authorize' into 'master'
Fix bug causing Bitbucket importer to crash when OAuth application
had been removed.
Fixes gitlab-com/support-forum#241.
See merge request !1057
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/bitbucket_import/client.rb | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/gitlab/bitbucket_import/client.rb b/lib/gitlab/bitbucket_import/client.rb index 5b1952b9675..778b76f6890 100644 --- a/lib/gitlab/bitbucket_import/client.rb +++ b/lib/gitlab/bitbucket_import/client.rb @@ -1,6 +1,8 @@ module Gitlab module BitbucketImport class Client + class Unauthorized < StandardError; end + attr_reader :consumer, :api def initialize(access_token = nil, access_token_secret = nil) @@ -46,23 +48,23 @@ module Gitlab end def user - JSON.parse(api.get("/api/1.0/user").body) + JSON.parse(get("/api/1.0/user").body) end def issues(project_identifier) - JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/issues").body) + JSON.parse(get("/api/1.0/repositories/#{project_identifier}/issues").body) end def issue_comments(project_identifier, issue_id) - JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/issues/#{issue_id}/comments").body) + JSON.parse(get("/api/1.0/repositories/#{project_identifier}/issues/#{issue_id}/comments").body) end def project(project_identifier) - JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}").body) + JSON.parse(get("/api/1.0/repositories/#{project_identifier}").body) end def find_deploy_key(project_identifier, key) - JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find do |deploy_key| + JSON.parse(get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find do |deploy_key| deploy_key["key"].chomp == key.chomp end end @@ -82,11 +84,18 @@ module Gitlab end def projects - JSON.parse(api.get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" } + JSON.parse(get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" } end private + def get(url) + response = api.get(url) + raise Unauthorized if (400..499).include?(response.code.to_i) + + response + end + def config Gitlab.config.omniauth.providers.find { |provider| provider.name == "bitbucket"} end |