aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bundler
diff options
context:
space:
mode:
authorFredrik Valeur <fredrik.valeur@appfolio.com>2014-09-26 14:14:03 -0700
committerFredrik Valeur <fredrik.valeur@appfolio.com>2014-09-26 14:14:03 -0700
commitf87da4f5c11442f7c3b61a7ec04f8462154fd5b0 (patch)
tree9055d704a8348d5cb76b8696f4262ad99c611bc8 /lib/bundler
parent8dbb7881c0463807bb8883e084818924fd3df09e (diff)
downloadbundler-f87da4f5c11442f7c3b61a7ec04f8462154fd5b0.tar.gz
Use HTTP auth when checking for presence of API
Diffstat (limited to 'lib/bundler')
-rw-r--r--lib/bundler/fetcher.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb
index 8c8c8689..48cdf26e 100644
--- a/lib/bundler/fetcher.rb
+++ b/lib/bundler/fetcher.rb
@@ -226,6 +226,12 @@ module Bundler
end
def use_api
+ _use_api(true)
+ rescue AuthenticationRequiredError
+ retry_with_auth{_use_api(false)}
+ end
+
+ def _use_api(reraise_auth_error = false)
return @use_api if defined?(@use_api)
if @remote_uri.scheme == "file" || Bundler::Fetcher.disable_endpoint
@@ -233,6 +239,9 @@ module Bundler
elsif fetch(dependency_api_uri)
@use_api = true
end
+ rescue AuthenticationRequiredError => e
+ raise e if reraise_auth_error
+ false
rescue HTTPError
@use_api = false
end
@@ -268,6 +277,8 @@ module Bundler
response.body
when Net::HTTPRequestEntityTooLarge
raise FallbackError, response.body
+ when Net::HTTPUnauthorized
+ raise AuthenticationRequiredError, "#{response.class}: #{response.body}"
else
raise HTTPError, "#{response.class}: #{response.body}"
end
@@ -282,8 +293,6 @@ module Bundler
req.basic_auth(user, password)
end
connection.request(uri, req)
- rescue Net::HTTPUnauthorized, Net::HTTPForbidden
- retry_with_auth { request(uri) }
rescue OpenSSL::SSL::SSLError
raise CertificateFailureError.new(uri)
rescue *HTTP_ERRORS => e