This class represents a request.
@example (see initialize)
@example Make a request with the shortcut.
response = Typhoeus.get("www.example.com")
@see (see initialize)
Returns the provided base url.
@return [ String ]
@return [ Boolean ]
@api private
Returns options, which includes default parameters.
@return [ Hash ]
Returns the original options provided.
@return [ Hash ]
@api private
Create a new request.
@example Simplest request.
response = Typhoeus::Request.new("www.example.com").run
@example Request with url parameters.
response = Typhoeus::Request.new( "www.example.com", params: {a: 1} ).run
@example Request with a body.
response = Typhoeus::Request.new( "www.example.com", body: {b: 2} ).run
@example Request with parameters and body.
response = Typhoeus::Request.new( "www.example.com", params: {a: 1}, body: {b: 2} ).run
@example Create a request and allow follow redirections.
response = Typhoeus::Request.new( "www.example.com", followlocation: true ).run
@param [ String ] #base_url The url to request. @param [ options ] options The options.
@option options [ Hash ] :params Translated
into url parameters.
@option options [ Hash ] :body Translated
into HTTP POST request body.
@return [ Typhoeus::Request ] The request.
@note See {rubydoc.info/github/typhoeus/ethon/Ethon/Easy/Options Ethon::Easy::Options} for more options.
@see Typhoeus::Hydra @see Typhoeus::Response @see Typhoeus::Request::Actions
# File lib/typhoeus/request.rb, line 109 def initialize(base_url, options = {}) @base_url = base_url @original_options = options @options = options.dup set_defaults end
Returns wether other is equal to self.
@example Are request equal?
request.eql?(other_request)
@param [ Object ] other The object to check.
@return [ Boolean ] Returns true if equals, else false.
@api private
# File lib/typhoeus/request.rb, line 139 def eql?(other) self.class == other.class && self.base_url == other.base_url && fuzzy_hash_eql?(self.options, other.options) end
Overrides Object#hash.
@return [ Integer ] The integer representing the request.
@api private
# File lib/typhoeus/request.rb, line 150 def hash Digest::MD5.hexdigest("#{self.class.name}#{base_url}#{options}").to_i(16) end
Return the url. In contrast to #base_url which returns the value you specified, url returns the full url including the parameters.
@example Get the url.
request.url
@since 0.5.5
# File lib/typhoeus/request.rb, line 125 def url EasyFactory.new(self).get.url end
Checks if two hashes are equal or not, discarding first-level hash order.
@param [ Hash ] left @param [ Hash ] right hash to check for equality
@return [ Boolean ] Returns true if hashes have
same values for same keys and same length, even if the keys are given in a different order.
# File lib/typhoeus/request.rb, line 165 def fuzzy_hash_eql?(left, right) return true if (left == right) (left.count == right.count) && left.inject(true) do |res, kvp| res && (kvp[1] == right[kvp[0]]) end end
Sets default header and verbose when turned on.
# File lib/typhoeus/request.rb, line 174 def set_defaults if @options[:headers] @options[:headers] = {'User-Agent' => Typhoeus::USER_AGENT}.merge(options[:headers]) else @options[:headers] = {'User-Agent' => Typhoeus::USER_AGENT} end @options[:verbose] = Typhoeus::Config.verbose if @options[:verbose].nil? && !Typhoeus::Config.verbose.nil? end