class Scraypa::UserAgentRandom

Attributes

current_user_agent[R]

Public Class Methods

new(*args) click to toggle source
Calls superclass method Scraypa::UserAgentAbstract::new
# File lib/scraypa/user_agent/user_agent_random.rb, line 7
def initialize *args
  super(*args)
  @config = args[0] || {}
  @change_after_n_requests = @config.fetch(:change_after_n_requests, 0)
  @list_limit = @config.fetch(:list_limit, 0).to_i
  random_limited_list if @list_limit > 0
  @current_user_agent = nil
  @current_user_agent_requests = 0
end

Public Instance Methods

user_agent() click to toggle source
# File lib/scraypa/user_agent/user_agent_random.rb, line 17
def user_agent
  get_a_new_user_agent? ? (
    @current_user_agent_requests = 0
    @list ?
        next_user_agent_from_list :
        select_user_agent_using_randomizer
  ) : (
    @current_user_agent_requests += 1
    @current_user_agent
  )
end

Private Instance Methods

ensure_a_new_random_user_agent() click to toggle source
# File lib/scraypa/user_agent/user_agent_random.rb, line 51
def ensure_a_new_random_user_agent
  random_user_agent = nil
  loop do
    random_user_agent = UserAgents.rand()
    break unless random_user_agent == @current_user_agent
  end
  random_user_agent
end
get_a_new_user_agent?() click to toggle source
# File lib/scraypa/user_agent/user_agent_random.rb, line 41
def get_a_new_user_agent?
  !@current_user_agent ||
      @current_user_agent_requests >= @change_after_n_requests
end
next_user_agent_from_list() click to toggle source
# File lib/scraypa/user_agent/user_agent_random.rb, line 60
def next_user_agent_from_list
  @reducing_list = @list.clone if @reducing_list.empty?
  @current_user_agent_requests += 1
  @current_user_agent = @reducing_list.shift
end
random_limited_list() click to toggle source
# File lib/scraypa/user_agent/user_agent_random.rb, line 31
def random_limited_list
  @list = []
  loop do
    random_ua = UserAgents.rand()
    @list << random_ua unless @list.include? random_ua
    break if @list.length >= @list_limit
  end
  @reducing_list = @list.clone
end
select_user_agent_using_randomizer() click to toggle source
# File lib/scraypa/user_agent/user_agent_random.rb, line 46
def select_user_agent_using_randomizer
  @current_user_agent_requests += 1
  @current_user_agent = ensure_a_new_random_user_agent
end