Sha256: 014664f7b2fef88843fe3a6576a5cec9180751789cd7c31ef69b1afb0f43da9c

Contents?: true

Size: 952 Bytes

Versions: 1

Compression:

Stored size: 952 Bytes

Contents

require "hwacha/version"
require "hwacha/config"
require "typhoeus"

class Hwacha
  attr_reader :max_concurrent_requests

  def initialize(max_concurrent_requests=20)
    config = Hwacha::Config.new

    # support the simple legacy API
    config.max_concurrent_requests = max_concurrent_requests

    # the nice configuration object API
    yield config if block_given?

    @max_concurrent_requests = config.max_concurrent_requests
  end

  def check(urls)
    hydra = Typhoeus::Hydra.new(:max_concurrency => @max_concurrent_requests)

    Array(urls).each do |url|
      request = Typhoeus::Request.new(url)
      request.on_complete do |response|
        yield response.effective_url, response
      end
      hydra.queue request
    end

    hydra.run
  end

  def find_existing(urls)
    check(urls) do |url, response|
      yield url if response.success?
    end
  end

  # Hwacha!!!
  alias :fire :check
  alias :strike_true :find_existing
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hwacha-0.2.0 lib/hwacha.rb