diff options
author | Valery Sizov <valery@gitlab.com> | 2015-08-04 10:43:26 +0000 |
---|---|---|
committer | Valery Sizov <valery@gitlab.com> | 2015-08-04 10:43:26 +0000 |
commit | 666e4437bbdac2a20934ea5f69be86e47a9586ba (patch) | |
tree | 226fc700a4f2367a45f4745d03cc6ad10f159252 | |
parent | ce6fd30dbf90d029022d4fd2e89c055b6c7bac07 (diff) | |
parent | 1fb04bcd74a6cf9f57bf3624b78a9d0d3b775a1c (diff) | |
download | gitlab-ce-666e4437bbdac2a20934ea5f69be86e47a9586ba.tar.gz |
Merge branch 'update_stable' into '7-13-stable'
Update stable 7.13.3
See merge request !1088
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | app/controllers/import/bitbucket_controller.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/bitbucket_import/client.rb | 21 |
3 files changed, 18 insertions, 6 deletions
diff --git a/CHANGELOG b/CHANGELOG index b22e098d128..6718b2148db 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,6 @@ Please view this file on the master branch, on stable branches it's out of date. +v 7.13.3 + - Fix bug causing Bitbucket importer to crash when OAuth application had been removed. v 7.13.2 - Fix randomly failed spec diff --git a/app/controllers/import/bitbucket_controller.rb b/app/controllers/import/bitbucket_controller.rb index ca78a4aaa8e..af0b841f0b7 100644 --- a/app/controllers/import/bitbucket_controller.rb +++ b/app/controllers/import/bitbucket_controller.rb @@ -3,6 +3,7 @@ class Import::BitbucketController < Import::BaseController before_action :bitbucket_auth, except: :callback rescue_from OAuth::Error, with: :bitbucket_unauthorized + rescue_from Gitlab::BitbucketImport::Client::Unauthorized, with: :bitbucket_unauthorized def callback request_token = session.delete(:oauth_request_token) 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 |