module SingleUserOauth::Signature

Constants

UNWANTED_HEADER_KEYS

Public Instance Methods

create(options) click to toggle source
# File lib/single_user_oauth/signature.rb, line 10
def create(options)
  @options          = options
  @request_method   = @options.fetch(:request_method, '').upcase
  @requested_url    = @options.fetch(:requested_url, '')
  @consumer_secret  = @options.fetch(:oauth_consumer_secret, '')
  @access_secret    = @options.fetch(:oauth_access_secret, '')

  calc_signature
end

Private Instance Methods

calc_signature() click to toggle source
# File lib/single_user_oauth/signature.rb, line 39
def calc_signature
  Base64.encode64(hmac_sha1).chomp.gsub(/\n/, '')
end
encode(*args) click to toggle source
# File lib/single_user_oauth/signature.rb, line 30
def encode(*args)
  string = ""
  args.each_with_index do |key, index|
    string << url_encode(key)
    string << '&' unless index == args.length-1
  end
  string
end
escape(item) click to toggle source
# File lib/single_user_oauth/signature.rb, line 69
def escape(item)
  CGI.escape(item)
end
flatten_nested_hash() click to toggle source
# File lib/single_user_oauth/signature.rb, line 59
def flatten_nested_hash
  @options.each_with_object({}) do |(key, value), object|
    if value.is_a?(Hash)
      value.collect {|k, v|  object[k] = v }
    elsif key != 'query_params'
        object[key] = value
    end
  end
end
hmac_sha1() click to toggle source
# File lib/single_user_oauth/signature.rb, line 43
def hmac_sha1
  OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, signing_key, signature_base_string)
end
percent_encode_params() click to toggle source
# File lib/single_user_oauth/signature.rb, line 51
def percent_encode_params
  flatten_nested_hash.reject{ |key| UNWANTED_HEADER_KEYS.include?(key) }.collect do |key, value|
    unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
      "#{escape(key.to_s)}=#{escape(value.to_s)}"
    end
  end.compact.sort! * '&'
end
signature_base_string() click to toggle source
# File lib/single_user_oauth/signature.rb, line 22
def signature_base_string
  encode(@request_method, @requested_url, percent_encode_params)
end
signing_key() click to toggle source
# File lib/single_user_oauth/signature.rb, line 26
def signing_key
  encode(@consumer_secret, @access_secret)
end
url_encode(item) click to toggle source
# File lib/single_user_oauth/signature.rb, line 47
def url_encode(item)
  SingleUserOauth::Utilities.url_encode(item)
end