summaryrefslogtreecommitdiff
path: root/lib/bundler/mirror.rb
diff options
context:
space:
mode:
authorPablo Carranza <pcarranza@gmail.com>2015-12-08 22:44:47 +0000
committerPablo Carranza <pcarranza@gmail.com>2015-12-27 22:19:55 +0100
commit206639df28fe4768dd41e0c572c10867aa1ce23e (patch)
treeaa2d3a0b9c6f3f9abd5882e512a7ff69a9d024d1 /lib/bundler/mirror.rb
parentecf26eaa1010906b766b87712ba585574b455dfa (diff)
downloadbundler-206639df28fe4768dd41e0c572c10867aa1ce23e.tar.gz
WIP - Setting up mirror probe with fallback
Diffstat (limited to 'lib/bundler/mirror.rb')
-rw-r--r--lib/bundler/mirror.rb38
1 files changed, 31 insertions, 7 deletions
diff --git a/lib/bundler/mirror.rb b/lib/bundler/mirror.rb
index dda6022e78..9824629635 100644
--- a/lib/bundler/mirror.rb
+++ b/lib/bundler/mirror.rb
@@ -1,7 +1,8 @@
module Bundler
class Settings
class Mirrors
- def initialize
+ def initialize(prober = nil)
+ @prober = prober || TCPProbe.new
@all = Mirror.new
@mirrors = Hash.new { |h, k| h[k] = Mirror.new }
end
@@ -10,6 +11,15 @@ module Bundler
@mirrors[URI(key.to_s)]
end
+ def for(uri)
+ return @all.uri if @all.valid?
+ uri = AbsoluteURI.normalize(uri)
+ return uri unless @mirrors[uri]
+ mirror = @mirrors[uri]
+ @prober.probe(mirror)
+ mirror.uri
+ end
+
def fetch(key, &block)
@mirrors.fetch(key, &block)
end
@@ -42,7 +52,11 @@ module Bundler
end
def uri=(uri)
- @uri = URI(uri.to_s)
+ @uri = if uri.nil?
+ uri = nil
+ else
+ URI(uri.to_s)
+ end
end
def fallback_timeout=(timeout)
@@ -65,16 +79,26 @@ module Bundler
end
end
+ class TCPProbe
+ def probe(uri)
+ end
+ end
+
private
class MirrorConfig
- attr_reader :uri, :value
+ attr_accessor :uri, :value
+
def initialize(config_line, value)
- all, uri, fallback =
- config_line.match(/^mirror(\.all)?\.(.+?)(\.fallback_timeout)?\/?$/).captures
- @all = !all.nil?
+ uri, fallback =
+ config_line.match(/^mirror\.(all|.+?)(\.fallback_timeout)?\/?$/).captures
@fallback = !fallback.nil?
- @uri = AbsoluteURI.normalize(uri)
+ @all = false
+ if uri == "all"
+ @all = true
+ else
+ @uri = AbsoluteURI.normalize(uri)
+ end
@value = value
end