summaryrefslogtreecommitdiff
path: root/lib/bitbucket_server
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-07-05 14:09:01 -0700
committerStan Hu <stanhu@gmail.com>2018-07-05 14:09:01 -0700
commita78e36abab6d30d2fc7571ab095a2c08bd52dd24 (patch)
treea38419b13447d2d5af0eef27350bdfd4745ba46d /lib/bitbucket_server
parentc7198166e8790a1335de0a08bd38080873806710 (diff)
downloadgitlab-ce-a78e36abab6d30d2fc7571ab095a2c08bd52dd24.tar.gz
Improve error handling of Bitbucket login errors
Diffstat (limited to 'lib/bitbucket_server')
-rw-r--r--lib/bitbucket_server/connection.rb23
-rw-r--r--lib/bitbucket_server/representation/repo.rb4
2 files changed, 25 insertions, 2 deletions
diff --git a/lib/bitbucket_server/connection.rb b/lib/bitbucket_server/connection.rb
index 21807c8a229..092c878c93b 100644
--- a/lib/bitbucket_server/connection.rb
+++ b/lib/bitbucket_server/connection.rb
@@ -1,5 +1,7 @@
module BitbucketServer
class Connection
+ include ActionView::Helpers::SanitizeHelper
+
DEFAULT_API_VERSION = '1.0'.freeze
attr_reader :api_version, :base_uri, :username, :token
@@ -15,19 +17,36 @@ module BitbucketServer
response = Gitlab::HTTP.get(build_url(path),
basic_auth: auth,
params: extra_query)
- ## Handle failure
+
+ check_errors!(response)
response.parsed_response
end
def post(path, body)
- Gitlab::HTTP.post(build_url(path),
+ response = Gitlab::HTTP.post(build_url(path),
basic_auth: auth,
headers: post_headers,
body: body)
+
+ check_errors!(response)
+ response
end
private
+ def check_errors!(response)
+ if response.code != 200
+ error =
+ if response.parsed_response
+ sanitize(response.parsed_response.dig('errors', 0, 'message'))
+ end
+
+ message = "Error #{response.code}"
+ message += ": #{error}" if error
+ raise ::BitbucketServer::Error::Unauthorized, message
+ end
+ end
+
def auth
@auth ||= { username: username, password: token }
end
diff --git a/lib/bitbucket_server/representation/repo.rb b/lib/bitbucket_server/representation/repo.rb
index 52dbe040a60..cf64f0ac8fa 100644
--- a/lib/bitbucket_server/representation/repo.rb
+++ b/lib/bitbucket_server/representation/repo.rb
@@ -5,6 +5,10 @@ module BitbucketServer
super(raw)
end
+ def project_name
+ raw.dig('project', 'name')
+ end
+
def owner
project['name']
end