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
assign(name, value)
Alias for: []=
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