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