class ProxySeeker::Tester
Constants
- TEST_URL
Attributes
proxies[R]
timeout[R]
Public Class Methods
new(proxies, opts = {})
click to toggle source
# File lib/proxy_seeker/tester.rb, line 7 def initialize(proxies, opts = {}) @timeout = opts[:timeout] || 3 @proxies = proxies end
Public Instance Methods
execute()
click to toggle source
# File lib/proxy_seeker/tester.rb, line 12 def execute filter_out proxies end
Private Instance Methods
filter_out()
click to toggle source
# File lib/proxy_seeker/tester.rb, line 19 def filter_out latency_filter end
latency_filter()
click to toggle source
# File lib/proxy_seeker/tester.rb, line 23 def latency_filter threads = [] proxies_count = proxies.size processed_count = 0 @proxies.each_with_index do |proxy, i| threads << Thread.new { test_result = ping_test(proxy, timeout) if test_result puts "OK: Proxy #{proxy} has passed #{timeout}s health check" else puts "FAIL: Proxy #{proxy} has failed #{timeout}s check" @proxies -= [proxy] end processed_count += 1 puts "--> #{((processed_count/proxies_count.to_f) * 100).round}% done" } end threads.each { |t| t.join } end
ping_test(proxy, timeout)
click to toggle source
# File lib/proxy_seeker/tester.rb, line 44 def ping_test(proxy, timeout) response = HTTParty.get(TEST_URL, http_proxyaddr: proxy.ip, http_proxyport: proxy.port, timeout: timeout) response.code == 200 ? true : false rescue false else true end