Class: Chargify2::Direct::SecureParameters

Inherits:
Object
  • Object
show all
Defined in:
lib/chargify2/direct.rb

Overview

There is no need to instantiate a SecureParameters instance directly. Use Direct#secure_parameters instead.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash, client) ⇒ SecureParameters

Returns a new instance of SecureParameters.



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/chargify2/direct.rb', line 39

def initialize(hash, client)
  args = hash.recursive_symbolize_keys

  @api_id     = client.api_id
  @secret     = client.api_secret

  @timestamp  = args[:timestamp]
  @nonce      = args[:nonce]
  @data       = args[:data]

  validate_args
end

Instance Attribute Details

#api_idObject (readonly)

Returns the value of attribute api_id.



33
34
35
# File 'lib/chargify2/direct.rb', line 33

def api_id
  @api_id
end

#dataObject (readonly)

Returns the value of attribute data.



36
37
38
# File 'lib/chargify2/direct.rb', line 36

def data
  @data
end

#nonceObject (readonly)

Returns the value of attribute nonce.



35
36
37
# File 'lib/chargify2/direct.rb', line 35

def nonce
  @nonce
end

#secretObject (readonly)

Returns the value of attribute secret.



37
38
39
# File 'lib/chargify2/direct.rb', line 37

def secret
  @secret
end

#timestampObject (readonly)

Returns the value of attribute timestamp.



34
35
36
# File 'lib/chargify2/direct.rb', line 34

def timestamp
  @timestamp
end

Instance Method Details

#encoded_dataObject



69
70
71
72
# File 'lib/chargify2/direct.rb', line 69

def encoded_data
  hash = data? ? data : {}
  Rack::Utils.build_nested_query(hash)
end

#signatureObject



74
75
76
77
# File 'lib/chargify2/direct.rb', line 74

def signature
  message = "#{api_id}#{timestamp}#{nonce}#{encoded_data}"
  Direct.signature(message, secret)
end

#to_form_inputsObject



52
53
54
55
56
57
58
59
60
# File 'lib/chargify2/direct.rb', line 52

def to_form_inputs
  output = []
  output << %{<input type="hidden" name="secure[api_id]" value="#{h(api_id)}"/>}
  output << %{<input type="hidden" name="secure[timestamp]" value="#{h(timestamp)}"/>} if timestamp?
  output << %{<input type="hidden" name="secure[nonce]" value="#{h(nonce)}"/>} if nonce?
  output << %{<input type="hidden" name="secure[data]" value="#{h(encoded_data)}"/>} if data?
  output << %{<input type="hidden" name="secure[signature]" value="#{h(signature)}"/>}
  output.join("\n")
end