class DynamicsCRM::XML::Fault

Represents a SOAP Fault Resposible for parsing each element

Attributes

code[R]
detail[R]
reason[R]
subcode[R]

Public Class Methods

new(fault_xml) click to toggle source
# File lib/dynamics_crm/xml/fault.rb, line 10
def initialize(fault_xml)
  if fault_xml.is_a?(Array)
    fault_xml = fault_xml.first
  end
  # REXL::Element
  @code = fault_xml.get_text("//[local-name() = 'Code']/[local-name() = 'Value']")
  @subcode = fault_xml.get_text("//[local-name() = 'Code']/[local-name() = 'Subcode']/[local-name() = 'Value']")
  @reason = fault_xml.get_text("//[local-name() = 'Reason']/[local-name() = 'Text']")

  @detail = {}
  detail_fragment = fault_xml.get_elements("//[local-name() = 'Detail']").first
  if detail_fragment
    fault_type = detail_fragment.elements.first
    @detail[:type] = fault_type.name
    detail_fragment.elements.first.each_element do |node|

      @detail[node.name.to_sym] = node.text
    end
  end
end

Public Instance Methods

message() click to toggle source
# File lib/dynamics_crm/xml/fault.rb, line 31
def message
  if @detail.empty?
    "%s[%s] %s" % [@code, @subcode, @reason]
  else
    "%s[%s] %s (Detail => %s)" % [@code, @subcode, @reason, @detail]
  end
end