class WorldnetTps::WsObject
Attributes
attributes[R]
date_time[R]
gateway[R]
request[R]
response[R]
Public Class Methods
current_date_time()
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 21 def self.current_date_time DateTime.now.utc.strftime('%d-%m-%Y:%H:%M:%S:000') end
new(gateway, attrs = {})
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 10 def initialize(gateway, attrs = {}) @gateway = gateway @attributes = attrs.merge( currency: gateway.currency, date_time: self.class.current_date_time, terminal_id: gateway.terminal_id, shared_secret: gateway.shared_secret, ) end
Protected Instance Methods
[](name)
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 33 def [](name) @attributes[name] end
[]=(name, value)
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 27 def []=(name, value) @attributes[name] = value end
Also aliased as: assign
add_check_sum!()
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 67 def add_check_sum! @attributes[:hash] = request_hash end
normalize_response_attributes(source)
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 37 def normalize_response_attributes(source) response_keys.inject(Hash.new) do |hash, el| hash[el] = source[prepare_key(el)] hash end end
prepare_key(k)
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 71 def prepare_key(k) k.to_s.upcase.gsub("_", "") end
request_hash()
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 63 def request_hash Digest::MD5.hexdigest self.class.request_check_sum_keys(self).inject("") { |str, el| str << attributes[el].to_s; str } end
validate_hash!(response_attrs)
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 44 def validate_hash!(response_attrs) #check hash response_source = self.class.response_check_sum_keys(self, response_attrs).inject("") do |str, el| str << (response_attrs[el] || @attributes[el]).to_s str end response_hash = Digest::MD5.hexdigest(response_source) raise InvalidHashError.new "invalid HASH value" if response_attrs[:hash] != response_hash end
verify_request_keys!(required_keys, attributes)
click to toggle source
# File lib/worldnet_tps/ws_object.rb, line 55 def verify_request_keys!(required_keys, attributes) invalid_keys = required_keys - attributes.keys if invalid_keys.any? keys = invalid_keys.sort_by { |k| k.to_s }.join(", ") raise ArgumentError, "#{keys} arguments are mandatory" end end