Module HTTParty::ClassMethods
In: lib/httparty.rb

Common Request Options

Request methods (get, post, put, delete, head, options) all take a common set of options. These are:

:body:
Body of the request. If passed a Hash, will try to normalize it first, by default passing it to ActiveSupport::to_params. Any other kind of object will get used as-is.
:http_proxyaddr:
Address of proxy server to use.
:http_proxyport:
Port of proxy server to use.
:limit:
Maximum number of redirects to follow. Takes precedences over :no_follow.
:query:
Query string, or a Hash representing it. Normalized according to the same rules as :body. If you specify this on a POST, you must use a Hash. See also HTTParty::ClassMethods.default_params.
:timeout:
Timeout for opening connection and reading data.

There are also another set of options with names corresponding to various class methods. The methods in question are those that let you set a class-wide default, and the options override the defaults on a request-by-request basis. Those options are:

Methods

Public Instance methods

Allows setting a base uri to be used for each request. Will normalize uri to include http, etc.

  class Foo
    include HTTParty
    base_uri 'twitter.com'
  end

Allows setting basic authentication username and password.

  class Foo
    include HTTParty
    basic_auth 'username', 'password'
  end

Set an output stream for debugging, defaults to $stderr. The output stream is passed on to Net::HTTP#set_debug_output.

  class Foo
    include HTTParty
    debug_output $stderr
  end

Allows setting default parameters to be appended to each request. Great for api keys and such.

  class Foo
    include HTTParty
    default_params :api_key => 'secret', :another => 'foo'
  end

Allows setting a default timeout for all HTTP calls Timeout is specified in seconds.

  class Foo
    include HTTParty
    default_timeout 10
  end

Perform a DELETE request to a path

Allows setting digest authentication username and password.

  class Foo
    include HTTParty
    digest_auth 'username', 'password'
  end

Do not send rails style query strings. Specically, don‘t use bracket notation when sending an array

For a query:

  get '/', :query => {:selected_ids => [1,2,3]}

The default query string looks like this:

  /?selected_ids[]=1&selected_ids[]=2&selected_ids[]=3

Call `disable_rails_query_string_format` to transform the query string into:

  /?selected_ids=1&selected_ids=2&selected_ids=3

@example

  class Foo
    include HTTParty
    disable_rails_query_string_format
  end

Proceed to the location header when an HTTP response dictates a redirect. Redirects are always followed by default.

@example

  class Foo
    include HTTParty
    base_uri 'http://google.com'
    follow_redirects true
  end

Allows setting the format with which to parse. Must be one of the allowed formats ie: json, xml

  class Foo
    include HTTParty
    format :json
  end

Allows making a get request to a url.

  class Foo
    include HTTParty
  end

  # Simple get with full url
  Foo.get('http://foo.com/resource.json')

  # Simple get with full url and query parameters
  # ie: http://foo.com/resource.json?limit=10
  Foo.get('http://foo.com/resource.json', :query => {:limit => 10})

Perform a HEAD request to a path

Allows setting HTTP headers to be used for each request.

  class Foo
    include HTTParty
    headers 'Accept' => 'text/html'
  end

Allows setting http proxy information to be used

  class Foo
    include HTTParty
    http_proxy 'http://foo.com', 80
  end

Declare that you wish to maintain the chosen HTTP method across redirects. The default behavior is to follow redirects via the GET method. If you wish to maintain the original method, you can set this option to true.

@example

  class Foo
    include HTTParty
    base_uri 'http://google.com'
    maintain_method_across_redirects true
  end

Declare whether or not to follow redirects. When true, an {HTTParty::RedirectionTooDeep} error will raise upon encountering a redirect. You can then gain access to the response object via HTTParty::RedirectionTooDeep#response.

@see HTTParty::ResponseError#response

@example

  class Foo
    include HTTParty
    base_uri 'http://google.com'
    no_follow true
  end

  begin
    Foo.get('/')
  rescue HTTParty::RedirectionTooDeep => e
    puts e.response.body
  end

Perform an OPTIONS request to a path

Allows setting a custom parser for the response.

  class Foo
    include HTTParty
    parser Proc.new {|data| ...}
  end

Allows setting a PEM file to be used

  class Foo
    include HTTParty
    pem File.read('/home/user/my.pem'), "optional password"
  end

Allows making a post request to a url.

  class Foo
    include HTTParty
  end

  # Simple post with full url and setting the body
  Foo.post('http://foo.com/resources', :body => {:bar => 'baz'})

  # Simple post with full url using :query option,
  # which gets set as form data on the request.
  Foo.post('http://foo.com/resources', :query => {:bar => 'baz'})

Perform a PUT request to a path

Override the way query strings are normalized. Helpful for overriding the default rails normalization of Array queries.

For a query:

  get '/', :query => {:selected_ids => [1,2,3]}

The default query string normalizer returns:

  /?selected_ids[]=1&selected_ids[]=2&selected_ids[]=3

Let‘s change it to this:

 /?selected_ids=1&selected_ids=2&selected_ids=3

Pass a Proc to the query normalizer which accepts the yielded query.

@example Modifying Array query strings

  class ServiceWrapper
    include HTTParty

    query_string_normalizer proc { |query|
      query.map do |key, value|
        value.map {|v| "#{key}=#{v}"}
      end.join('&')
    }
  end

@param [Proc] normalizer custom query string normalizer. @yield [Hash, String] query string @yieldreturn [Array] an array that will later be joined with ’&’

Allows setting an OpenSSL certificate authority file

  class Foo
    include HTTParty
    ssl_ca_file '/etc/ssl/certs/ca-certificates.crt'
  end

Allows setting an OpenSSL certificate authority path (directory)

  class Foo
    include HTTParty
    ssl_ca_path '/etc/ssl/certs/'
  end

[Validate]