Sha256: 4fd59ecc305b1e103e6cd10ab73d8d73adf720e2564ad6ae3cdc5381ca869c7c

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module ProxyFetcher
  class Proxy
    attr_reader :addr, :port, :country, :response_time, :speed, :type, :anonymity

    def initialize(html_row)
      ProxyFetcher.config.provider.parse_entry(html_row, self)

      self
    end

    def connectable?
      connection = Net::HTTP.new(addr, port)
      connection.use_ssl = true if https?
      connection.open_timeout = ProxyFetcher.config.open_timeout
      connection.read_timeout = ProxyFetcher.config.read_timeout

      connection.start { |http| return true if http.request_head('/') }

      false
    rescue Timeout::Error, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ECONNABORTED
      false
    end

    alias valid? connectable?

    %i[slow medium fast].each do |method|
      define_method "#{method}?" do
        speed == method
      end
    end

    def http?
      type.casecmp('http').zero?
    end

    def https?
      type.casecmp('https').zero?
    end

    def uri
      URI::Generic.build(host: addr, port: port, scheme: type)
    end

    def url
      uri.to_s
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
proxy_fetcher-0.2.5 lib/proxy_fetcher/proxy.rb