class Typhoeus::Request
def self.delete(url, params = {})
def self.delete(url, params = {}) run(url, params.merge(:method => :delete)) end
def self.get(url, params = {})
def self.get(url, params = {}) run(url, params.merge(:method => :get)) end
def self.head(url, params = {})
def self.head(url, params = {}) run(url, params.merge(:method => :head)) end
def self.post(url, params = {})
def self.post(url, params = {}) run(url, params.merge(:method => :post)) end
def self.put(url, params = {})
def self.put(url, params = {}) run(url, params.merge(:method => :put)) end
def self.run(url, params)
def self.run(url, params) r = new(url, params) Typhoeus::Hydra.hydra.queue r Typhoeus::Hydra.hydra.run r.response end
def after_complete(&block)
def after_complete(&block) @after_complete = block end
def after_complete=(proc)
def after_complete=(proc) @after_complete = proc end
def cache_key
def cache_key Digest::SHA1.hexdigest(url) end
def call_after_complete
def call_after_complete @after_complete.call(@handled_response) if @after_complete end
def call_handlers
def call_handlers if @on_complete @handled_response = @on_complete.call(response) call_after_complete end end
def handled_response
def handled_response @handled_response || response end
def handled_response=(val)
def handled_response=(val) @handled_response = val end
def headers
def headers @headers["User-Agent"] = @user_agent @headers end
def host
def host slash_location = @url.index('/', 8) if slash_location @url.slice(0, slash_location) else query_string_location = @url.index('?') return query_string_location ? @url.slice(0, query_string_location) : @url end end
def initialize(url, options = {})
def initialize(url, options = {}) @method = options[:method] || :get @params = options[:params] @body = options[:body] @timeout = options[:timeout] @headers = options[:headers] || {} @user_agent = options[:user_agent] || Typhoeus::USER_AGENT @cache_timeout = options[:cache_timeout] @follow_location = options[:follow_location] @max_redirects = options[:max_redirects] @proxy = options[:proxy] @disable_ssl_peer_verification = options[:disable_ssl_peer_verification] if @method == :post @url = url else @url = @params ? "#{url}?#{params_string}" : url end @on_complete = nil @after_complete = nil @handled_response = nil end
def on_complete(&block)
def on_complete(&block) @on_complete = block end
def on_complete=(proc)
def on_complete=(proc) @on_complete = proc end
def params_string
def params_string params.keys.sort { |a, b| a.to_s <=> b.to_s }.collect do |k| value = params[k] if value.is_a? Hash value.keys.collect {|sk| Rack::Utils.escape("#{k}[#{sk}]") + "=" + Rack::Utils.escape(value[sk].to_s)} elsif value.is_a? Array key = Rack::Utils.escape(k.to_s) value.collect { |v| "#{key}=#{Rack::Utils.escape(v.to_s)}" }.join('&') else "#{Rack::Utils.escape(k.to_s)}=#{Rack::Utils.escape(params[k].to_s)}" end end.flatten.join("&") end