aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bundler/fetcher.rb
diff options
context:
space:
mode:
authorAndre Arko <andre@arko.net>2014-11-10 20:24:58 -0800
committerAndre Arko <andre@arko.net>2014-11-10 20:24:58 -0800
commit6ba537fc069a75d473080ba3f724ac2aa06346e4 (patch)
tree5766e11fef32b62974fe8c58d8cded2433122967 /lib/bundler/fetcher.rb
parent00a795c763d7a67d40ca868e4ad2a7386d712d3e (diff)
parent28b3808c7d9c8331f497fc865569c1ab716f58f1 (diff)
downloadbundler-6ba537fc069a75d473080ba3f724ac2aa06346e4.tar.gz
Merge tag 'v1.7.5'
Version 1.7.5 Conflicts: .travis.yml CHANGELOG.md lib/bundler/fetcher.rb lib/bundler/source_list.rb man/gemfile.5.ronn spec/bundler/source_list_spec.rb
Diffstat (limited to 'lib/bundler/fetcher.rb')
-rw-r--r--lib/bundler/fetcher.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb
index a35ea135..09e954cd 100644
--- a/lib/bundler/fetcher.rb
+++ b/lib/bundler/fetcher.rb
@@ -236,6 +236,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
@@ -245,6 +251,9 @@ module Bundler
end
rescue NetworkDownError => e
raise HTTPError, e.message
+ rescue AuthenticationRequiredError => e
+ raise e if reraise_auth_error
+ false
rescue HTTPError
@use_api = false
end
@@ -289,6 +298,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