class Scruber::Helpers::UserAgentRotator

Attributes

configuration[W]
cursor[RW]

Public Class Methods

configuration() click to toggle source
# File lib/scruber/helpers/user_agent_rotator.rb, line 55
def configuration
  @configuration ||= Configuration.new
end
configure(&block) click to toggle source
# File lib/scruber/helpers/user_agent_rotator.rb, line 59
def configure(&block)
  configuration.configure(&block)
end
next(tags=nil) click to toggle source
# File lib/scruber/helpers/user_agent_rotator.rb, line 63
def next(tags=nil)
  raise Scruber::ArgumentError.new("UserAgent rotator not configured") if @configuration.nil?
  tags = @configuration.tags if tags.blank?
  user_agents = get_collection(tags)
  if @cursor.nil? || @cursor >= user_agents.count-1
    @cursor = 0
  else
    @cursor += 1
  end
  user_agents[@cursor].name
end

Private Class Methods

get_collection(tags) click to toggle source
# File lib/scruber/helpers/user_agent_rotator.rb, line 77
def get_collection(tags)
  if tags == :all
    @configuration.user_agents
  else
    if !tags.is_a?(Array)
      tags = [tags]
    end
    tags = tags.compact.map(&:to_sym)
    @configuration.user_agents.select{|ua| tags.all?{|t| ua.tags.include?(t) } }
  end
end