class Scruber::Helpers::ProxyRotator::Configuration

Constants

AVAILABLE_MODES

Attributes

mode[R]
pickup[R]
proxies[R]
proxy_keys[R]

Public Class Methods

new() click to toggle source
# File lib/scruber/helpers/proxy_rotator.rb, line 47
def initialize
  @mode = :round_robin
  @proxies = {}
  @proxy_keys = []
  @pickup = nil
end

Public Instance Methods

add(proxy_address, options={}) click to toggle source
# File lib/scruber/helpers/proxy_rotator.rb, line 63
def add(proxy_address, options={})
  proxy = Proxy.new(proxy_address, options)
  @proxies[proxy.id] = proxy
end
clean() click to toggle source
# File lib/scruber/helpers/proxy_rotator.rb, line 59
def clean
  @proxies = {}
end
configure(&block) click to toggle source
# File lib/scruber/helpers/proxy_rotator.rb, line 54
def configure(&block)
  instance_eval &block
  rebuild_caches
end
set_mode(mode) click to toggle source
# File lib/scruber/helpers/proxy_rotator.rb, line 68
def set_mode(mode)
  if AVAILABLE_MODES.include?(mode)
    @mode = mode
  else
    raise Scruber::ArgumentError.new("Wrong mode. Available modes: #{AVAILABLE_MODES}")
  end
end

Private Instance Methods

rebuild_caches() click to toggle source
# File lib/scruber/helpers/proxy_rotator.rb, line 78
def rebuild_caches
  if @mode == :random
    @pickup = Pickup.new(@proxies.inject({}){ |acc,(k,p)| acc[p] = p.probability; acc })
  else
    @proxy_keys = @proxies.keys
  end
end