class OAuthClient

FriendFeed and Google Buzz.
See sample/ dir how to use OAuthClient. There are sample clients for Twitter,
OAuthClient provides OAuth related methods in addition to HTTPClient.

def filter_response(res)

def filter_response(res)
  if res.status == 200
    if res.oauth_params = get_oauth_response(res)
      oauth_config.token = res.oauth_params['oauth_token']
      oauth_config.secret = res.oauth_params['oauth_token_secret']
    end
  end
end

def get_access_token(uri, request_token, request_token_secret, verifier = nil)

All requests are signed.
the access token. Then you can call OAuthClient#get, #post, #delete, etc.
and secret, oauth_config.token and oauth_token.secret are updated with
When the request succeeds and the server returns a pair of access token

verifier:: a verifier tag String.
request_token_secret:: a request secret String. See get_access_token.
request_token:: a request token String. See get_access_token.
uri:: URI for request token.
Get access token.
def get_access_token(uri, request_token, request_token_secret, verifier = nil)
  oauth_config.token = request_token
  oauth_config.secret = request_token_secret
  oauth_config.callback = nil
  oauth_config.verifier = verifier
  res = request(oauth_config.http_method, uri)
  filter_response(res)
  oauth_config.verifier = nil
  res
end

def get_oauth_response(res)

Parse response and returns a Hash.
def get_oauth_response(res)
  enc = res.header['content-encoding']
  body = nil
  if enc and enc[0] and enc[0].downcase == 'gzip'
    body = Zlib::GzipReader.wrap(StringIO.new(res.content)) { |gz| gz.read }
  else
    body = res.content
  end
  body.split('&').inject({}) { |r, e|
    key, value = e.split('=', 2)
    r[unescape(key)] = unescape(value)
    r
  }
end

def get_request_token(uri, callback = nil, param = nil)

secret = res.oauth_params['oauth_token_secret']
token = res.oauth_params['oauth_token']
res = client.get_request_token(...)
following;
successfully, you can retrieve a pair of request token and secret like
It returns a HTTP::Message instance as a response. When the request is made

param:: Additional query parameter Hash.
callback:: callback String. This can be nil for OAuth 1.0a
uri:: URI for request token.
Get request token.
def get_request_token(uri, callback = nil, param = nil)
  oauth_config.token = nil
  oauth_config.secret = nil
  oauth_config.callback = callback
  oauth_config.verifier = nil
  res = request(oauth_config.http_method, uri, param)
  filter_response(res)
  res
end

def initialize(*arg)

Method signature is as same as HTTPClient. See HTTPClient.new

addition to HTTPClient.
Creates a OAuthClient instance which provides OAuth related methods in
def initialize(*arg)
  super
  @oauth_config = HTTPClient::OAuth::Config.new
  self.www_auth.oauth.set_config(nil, @oauth_config)
  self.www_auth.oauth.challenge(nil)
end

def unescape(escaped)

def unescape(escaped)
  escaped ? ::HTTP::Message.unescape(escaped) : nil
end