Class: Cardinity::Auth

Inherits:
Object
  • Object
show all
Defined in:
lib/cardinity/auth.rb

Constant Summary collapse

OAUTH_VERSION =
'1.0'
SIGNATURE_METHOD =
'HMAC-SHA1'

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Auth

Returns a new instance of Auth.



13
14
15
# File 'lib/cardinity/auth.rb', line 13

def initialize(config)
  @config = config
end

Instance Method Details

#digest(string) ⇒ Object



39
40
41
42
43
44
45
# 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) ⇒ Object



35
36
37
# File 'lib/cardinity/auth.rb', line 35

def encoded_digest(string)
  Base64.strict_encode64(digest(string))
end

#escape(string) ⇒ Object



47
48
49
# File 'lib/cardinity/auth.rb', line 47

def escape(string)
  URI.encode_www_form_component(string)
end

#generate_base_string(method, url, params) ⇒ Object



51
52
53
54
# 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) ⇒ Object



30
31
32
33
# 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 = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# 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