class ProxySeeker::Fetcher

Attributes

proxies[R]
scrapers[R]

Public Class Methods

new(opts = {}) click to toggle source
# File lib/proxy_seeker/fetcher.rb, line 5
def initialize(opts = {})
  @scrapers, @proxies = [], []
  @opts = opts

  Dir["#{File.dirname(__FILE__)}/scrapers/*.rb"].each do |file|
    class_name  = file.split('/').last.split('.rb').first.split('_').map(&:capitalize).join
    class_const = Object.const_get("ProxySeeker::Scrapers::#{class_name}") rescue nil
    @scrapers << class_const if !class_const.nil? && class_const.new.respond_to?(:fetch)
  end
end

Public Instance Methods

execute() click to toggle source
# File lib/proxy_seeker/fetcher.rb, line 16
def execute
  fetch_all
  filer_out
  proxies
end

Private Instance Methods

fetch_all() click to toggle source
# File lib/proxy_seeker/fetcher.rb, line 24
def fetch_all
  scrapers.each do |fetcher|
    @proxies << fetcher.new.fetch
  end

  @proxies = @proxies.flatten.compact
end
filer_out() click to toggle source
# File lib/proxy_seeker/fetcher.rb, line 32
def filer_out
  @proxies = @proxies.uniq.select{ |proxy| proxy.valid? }
end