lib/chargify2/direct.rb in chargify2-0.1.0 vs lib/chargify2/direct.rb in chargify2-0.2.0

- old
+ new

@@ -9,12 +9,12 @@ def secure_parameters(params = {}) SecureParameters.new(params, client) end - def result(params = {}) - Result.new(params, client) + def response_parameters(params = {}) + ResponseParameters.new(params, client) end def self.signature(message, secret) OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha1'), secret, message) end @@ -88,18 +88,20 @@ if data && !data.is_a?(Hash) raise ArgumentError.new("The 'data' must be provided as a Hash (you passed a #{data.class})") end unless api_id && secret && api_id.to_s.length > 0 && secret.to_s.length > 0 - # raise ArgumentError + raise ArgumentError.new("SecureParameters require connection to a Client - was one given?") end end end - # There is no need to instantiate a Result instance directly. Use Direct#results instead. - class Result + # There is no need to instantiate a ResponseParameters instance directly. Use Direct#response_parameters instead. + class ResponseParameters attr_reader :api_id + attr_reader :timestamp + attr_reader :nonce attr_reader :status_code attr_reader :result_code attr_reader :call_id attr_reader :secret attr_reader :signature @@ -109,28 +111,32 @@ @api_id = client.api_id @secret = client.api_secret @status_code = args[:status_code] + @timestamp = args[:timestamp] + @nonce = args[:nonce] @result_code = args[:result_code] @call_id = args[:call_id] @signature = args[:signature] + + validate_args end def verified? - message = "#{api_id}#{status_code}#{result_code}#{call_id}" + message = "#{api_id}#{timestamp}#{nonce}#{status_code}#{result_code}#{call_id}" Direct.signature(message, secret) == signature end def success? status_code.to_s == '200' end private def validate_args - if data && !data.is_a?(Hash) - raise ArgumentError.new("The 'data' must be provided as a Hash (you passed a #{data.class})") + unless api_id && secret && api_id.to_s.length > 0 && secret.to_s.length > 0 + raise ArgumentError.new("ResponseParameters require connection to a Client - was one given?") end end end end end \ No newline at end of file