class Harpy::Client

Attributes

options[RW]

Public Class Methods

new(opts=nil) click to toggle source
# File lib/harpy/client.rb, line 8
def initialize(opts=nil)
  self.options = (opts || {})
end

Public Instance Methods

delete(url_or_urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 32
def delete(url_or_urls, opts=nil)
  request :delete, url_or_urls, opts
end
get(url_or_urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 12
def get(url_or_urls, opts=nil)
  request :get, url_or_urls, opts
end
head(url_or_urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 16
def head(url_or_urls, opts=nil)
  request :head, url_or_urls, opts
end
invalid_code(response) click to toggle source
# File lib/harpy/client.rb, line 42
def invalid_code(response)
  if response.timed_out?
    raise ClientTimeout
  elsif response.code.zero?
    raise ClientError, response.return_message
  else
    raise InvalidResponseCode, response.code.to_s
  end
end
patch(url_or_urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 28
def patch(url_or_urls, opts=nil)
  request :patch, url_or_urls, opts
end
post(url_or_urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 20
def post(url_or_urls, opts=nil)
  request :post, url_or_urls, opts
end
put(url_or_urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 24
def put(url_or_urls, opts=nil)
  request :put, url_or_urls, opts
end
run(requests) click to toggle source
# File lib/harpy/client.rb, line 36
def run(requests)
  requests.each{|request| Typhoeus::Hydra.hydra.queue request}
  Typhoeus::Hydra.hydra.run
  requests.collect(&:response)
end

Private Instance Methods

request(method, urls, opts=nil) click to toggle source
# File lib/harpy/client.rb, line 54
def request(method, urls, opts=nil)
  opts = options.deep_merge(opts || {})
  case urls
  when Array
    requests = urls.collect do |url|
      Typhoeus::Request.new url, opts.merge(:method => method)
    end
  else
    Typhoeus::Request.send method, urls, opts
  end
end