class Securetrading::XmlDoc

Public Class Methods

elements(hash) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/securetrading/xml_doc.rb, line 19
def self.elements(hash)
  return [''] unless hash.present?
  hash.flat_map do |k, v|
    return v.flat_map { |e| elements(k => e) } if v.is_a?(Array)
    el = new_element(k.to_s)
    if v.is_a?(Hash)
      elements(v).each { |e| el << e }
    else
      el << v.to_s
    end
    [el]
  end
end
new(request_type, account_type, user = nil) click to toggle source
# File lib/securetrading/xml_doc.rb, line 3
def initialize(request_type, account_type, user = nil)
  @account_type = account_type
  @request_type = request_type
  @user = user
end
new_element(name) click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/securetrading/xml_doc.rb, line 34
def self.new_element(name)
  Ox::Element.new(name)
end

Public Instance Methods

doc() click to toggle source
# File lib/securetrading/xml_doc.rb, line 9
def doc
  return @doc if @doc.present?
  @doc = Ox::Document.new(version: '1.0')
  root = new_element('requestblock')
  root[:version] = '3.67'
  root << alias_el << request_el
  @doc << root
end

Private Instance Methods

alias_el() click to toggle source
# File lib/securetrading/xml_doc.rb, line 44
def alias_el
  self.class.elements(alias: @user || Securetrading.config.user).first
end
new_element(name) click to toggle source
# File lib/securetrading/xml_doc.rb, line 40
def new_element(name)
  self.class.new_element(name)
end
request_el() click to toggle source
# File lib/securetrading/xml_doc.rb, line 48
def request_el
  el = new_element('request')
  el[:type] = @request_type
  el
end