class Typhoeus::Request

This class represents a request.

@example (see initialize)

@example Make a request with the shortcut.

response = Typhoeus.get("www.example.com")

@see (see initialize)

Attributes

base_url[RW]

Returns the provided base url.

@return [ String ]

block_connection[RW]

@return [ Boolean ]

@api private

hydra[RW]

Returns the hydra the request ran into if any.

@return [ Typhoeus::Hydra ]

@api private

options[RW]

Returns options, which includes default parameters.

@return [ Hash ]

original_options[RW]

Returns the original options provided.

@return [ Hash ]

@api private

Public Class Methods

new(base_url, options = {}) click to toggle source

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

Public Instance Methods

eql?(other) click to toggle source

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
hash() click to toggle source

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
url() click to toggle source

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

Private Instance Methods

fuzzy_hash_eql?(left, right) click to toggle source

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
set_defaults() click to toggle source

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