Hwacha Build Status Gem Version

Hwacha! Harness the power of Typhoeus to quickly check webpage responses.

Examples

Check a single page.

hwacha = Hwacha.new
hwacha.check('rakeroutes.com') do |url, response|
  if response.success?
    puts "Woo, #{url} looks good!"
  else
    puts "Aww, something that isn't success happened."
  end
end

Configure the maximum number of concurrent requests.

hwacha = Hwacha.new do |config|
  config.max_concurrent_requests = 10 # 20 is the default
end

# a legacy integer argument is also supported
hwacha = Hwacha.new(10)

Follow redirects!

hwacha = Hwacha.new do |config|
  config.follow_redirects = true
end

Check a bunch of pages! Hwacha!

hwacha = Hwacha.new
hwacha.check(array_of_webpage_urls) do |url, response|
  # each url is enqueued in parallel using the powerful Typhoeus library!
  # this block is yielded the url and response object for every response!
end

The yielded response object is straight from Typhoeus.

hwacha.check(array_of_webpage_urls) do |url, response|
  if response.success?
    # hwacha!
  elsif response.timed_out?
    # time makes fools of us all
  elsif response.code == 0
    # misfire!
  else
    # miss! :-(
    # something like 404 in response.code
  end
end

Sometimes you don't want to deal with the response object. Sometimes you just want to fire a bunch of requests and find pages that successfully respond. Ok!

hwacha = Hwacha.new

hwacha.find_existing(array_of_webpage_urls) do |url|
  # this block will be called for all urls that successfully respond!
  # hwacha!
end

Alternative API

More fun, more hwacha.

# fire is an alias for #check
hwacha.fire('rakeroutes.com') do |url, response|
  puts "Checking %s" % url
  if response.success?
    puts "success!"
  else
    puts "failed."
  end
end

# strike_true is an alias for #find_existing
successful = 0
hwacha.strike_true(unknown_pages) do |url|
  successful += 1
end
puts "Hwacha! #{successful} hits!"

Installation

Add this line to your application's Gemfile:

gem 'hwacha'

And then execute:

$ bundle

Or install it yourself as:

$ gem install hwacha