class OAuth1::Helper

Attributes

url_params[R]

Public Class Methods

new(method, url, params, options) click to toggle source
# File lib/oauth1/helper.rb, line 12
def initialize(method, url, params, options)
  options.reverse_update({
    version: "1.0",
    signature_method: 'HMAC-SHA1',
    timestamp: Time.now.to_i.to_s,
    nonce: SecureRandom.uuid
  })

  @consumer_secret = options.delete(:consumer_secret)
  @token_secret = options.delete(:token_secret)
  @url_params = params.merge(prepend_oauth_to_key(options))
  @method = method.to_s.upcase
  @url = Addressable::URI.parse(url)
end

Public Instance Methods

full_url() click to toggle source
# File lib/oauth1/helper.rb, line 33
def full_url
  append_signature_to_params
  url_with_params.to_s
end
signature_base() click to toggle source
# File lib/oauth1/helper.rb, line 27
def signature_base
  @url_params.delete(:oauth_signature)
  [@method, @url.to_s, url_with_params.query].map{|v| CGI.escape(v) }.join('&')
end

Private Instance Methods

append_signature_to_params() click to toggle source
# File lib/oauth1/helper.rb, line 47
def append_signature_to_params
  @url_params[:oauth_signature] = hmac_sha1_signature(key, signature_base)
end
hmac_sha1_signature(key, signature_string) click to toggle source
# File lib/oauth1/helper.rb, line 55
def hmac_sha1_signature(key, signature_string)
  digest = OpenSSL::Digest.new('sha1')
  hmac = OpenSSL::HMAC.digest(digest, key, signature_string)
  Base64.encode64(hmac).chomp.gsub(/\n/, '')
end
key() click to toggle source
# File lib/oauth1/helper.rb, line 39
def key
  @token_secret ? "#{CGI.escape(@consumer_secret)}&#{CGI.escape(@token_secret)}" : "#{CGI.escape(@consumer_secret)}&"
end
prepend_oauth_to_key(options) click to toggle source
# File lib/oauth1/helper.rb, line 51
def prepend_oauth_to_key(options)
  Hash[options.map{|key, value| ["oauth_#{key}".to_sym, value]}]
end
url_with_params() click to toggle source
# File lib/oauth1/helper.rb, line 43
def url_with_params
  @url.dup.tap{|url| url.query_values = url_params}
end