class Cardinity::Auth

Constants

OAUTH_VERSION
SIGNATURE_METHOD

Public Class Methods

new(config) click to toggle source
# File lib/cardinity/auth.rb, line 13
def initialize(config)
  @config = config
end

Public Instance Methods

digest(string) click to toggle source
# File lib/cardinity/auth.rb, line 39
def digest(string)
  key = escape(@config[:secret]) + '&'
  OpenSSL::HMAC.digest(
      OpenSSL::Digest.new('sha1'),
      key,
      string)
end
encoded_digest(string) click to toggle source
# File lib/cardinity/auth.rb, line 35
def encoded_digest(string)
  Base64.strict_encode64(digest(string))
end
escape(string) click to toggle source
# File lib/cardinity/auth.rb, line 47
def escape(string)
  URI.encode_www_form_component(string)
end
generate_base_string(method, url, params) click to toggle source
# File lib/cardinity/auth.rb, line 51
def generate_base_string(method, url, params)
  base = [method.to_s.upcase, url, normalized_params(params)]
  base.map { |v| escape(v) }.join('&')
end
request_signature(method, uri, params) click to toggle source
# File lib/cardinity/auth.rb, line 30
def request_signature(method, uri, params)
  base_str = generate_base_string(method, uri, params)
  encoded_digest(base_str)
end
sign_request(method, uri, params = {}) click to toggle source
# File lib/cardinity/auth.rb, line 17
def sign_request(method, uri, params = {})
  params = {
      oauth_consumer_key: @config[:key],
      oauth_nonce: generate_key,
      oauth_signature_method: SIGNATURE_METHOD,
      oauth_timestamp: generate_timestamp,
      oauth_version: OAUTH_VERSION
  }.update(params)
  params[:oauth_signature] = request_signature(method, uri, params)
  params_str = params.map { |k, v| "#{k}=\"#{escape(v.to_s)}\"" }.join(', ')
  "OAuth #{params_str}"
end

Private Instance Methods

generate_key(size=32) click to toggle source
# File lib/cardinity/auth.rb, line 58
def generate_key(size=32)
  Base64.strict_encode64(OpenSSL::Random.random_bytes(size)).gsub(/\W/, '')
end
generate_timestamp() click to toggle source
# File lib/cardinity/auth.rb, line 62
def generate_timestamp
  Time.now.to_i.to_s
end
normalized_params(params) click to toggle source
# File lib/cardinity/auth.rb, line 66
def normalized_params(params)
  params.collect { |k, v| "#{k}=#{v}" }.sort.join("&")
end