Class: KillSite

Inherits:
Object
  • Object
show all
Defined in:
lib/killsite.rb

Instance Method Summary collapse

Constructor Details

#initialize(prefix, limit = 1, verbose = false) ⇒ KillSite

Returns a new instance of KillSite.



6
7
8
9
10
11
12
13
# File 'lib/killsite.rb', line 6

def initialize(prefix, limit = 1, verbose = false)
  @count = 1
  @prefix = prefix
  @visited = [prefix]
  @queue = [prefix]
  @verbose = verbose
  @limit = limit
end

Instance Method Details

#runObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/killsite.rb', line 15

def run
  EM.stop if @count == 0
  return if @queue.empty?

  url = @queue.shift

  http = EventMachine::HttpRequest.new(url).get
  http.callback do
    puts "Processing '#{url}'" if @verbose

    Nokogiri::HTML.parse(http.response).xpath("//a[@href]").each do |link|
	next_url = process_url link['href']
	if next_url and !@visited.include? next_url
 puts "  Queueing '#{next_url}'" if @verbose

 @limit.times { @queue << next_url }
 @visited << next_url
 @count += @limit
	end
    end
    @count -= 1
    EM.next_tick { run }
  end
end