class Securetrading::BaseModel

Attributes

attributes_hash[R]

Public Class Methods

new(attrs_hash = {}) click to toggle source
# File lib/securetrading/base_model.rb, line 5
def initialize(attrs_hash = {})
  @attributes_hash = attrs_hash.presence &&
                     attrs_hash.transform_keys! { |k| k.to_s.tr('__', '') }
end

Public Instance Methods

ox_xml() click to toggle source
# File lib/securetrading/base_model.rb, line 10
def ox_xml
  ox = ox_from_values
  sub_classes.each do |sub_class_name|
    next unless attributes_hash.key?(sub_class_name)
    ox << send(sub_class_name).ox_xml
  end
  ox
end

Private Instance Methods

determine_value(name) click to toggle source
# File lib/securetrading/base_model.rb, line 36
def determine_value(name)
  if name == 'error'
    Securetrading::ResponseError.new(attributes_hash[name])
  elsif name.in?(sub_classes)
    "Securetrading::#{name.capitalize}".constantize
      .public_send(:new, attributes_hash[name])
  else
    attributes_hash[name]
  end
end
method_missing(m, *args, &block) click to toggle source
Calls superclass method
# File lib/securetrading/base_model.rb, line 31
def method_missing(m, *args, &block)
  return super unless attributes_hash.key?(m.to_s)
  determine_value(m.to_s)
end
ox_from_values() click to toggle source
# File lib/securetrading/base_model.rb, line 21
def ox_from_values
  XmlDoc
    .elements(xml_tag_name => @attributes_hash.except(*sub_classes))
    .first
end
sub_classes() click to toggle source
# File lib/securetrading/base_model.rb, line 47
def sub_classes
  []
end
xml_tag_name() click to toggle source
# File lib/securetrading/base_model.rb, line 27
def xml_tag_name
  self.class.name.demodulize.downcase
end