Exception: Handsoap::Fault
- Inherits:
-
StandardError
- Object
- StandardError
- Handsoap::Fault
- Defined in:
- lib/handsoap/service.rb
Overview
Wraps SOAP errors in a standard class.
Instance Attribute Summary collapse
-
#code ⇒ Object
readonly
Returns the value of attribute code.
-
#details ⇒ Object
readonly
Returns the value of attribute details.
-
#reason ⇒ Object
readonly
Returns the value of attribute reason.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(code, reason, details) ⇒ Fault
constructor
A new instance of Fault.
- #to_s ⇒ Object
Constructor Details
#initialize(code, reason, details) ⇒ Fault
Returns a new instance of Fault.
72 73 74 75 76 |
# File 'lib/handsoap/service.rb', line 72 def initialize(code, reason, details) @code = code @reason = reason @details = details end |
Instance Attribute Details
#code ⇒ Object (readonly)
Returns the value of attribute code.
70 71 72 |
# File 'lib/handsoap/service.rb', line 70 def code @code end |
#details ⇒ Object (readonly)
Returns the value of attribute details.
70 71 72 |
# File 'lib/handsoap/service.rb', line 70 def details @details end |
#reason ⇒ Object (readonly)
Returns the value of attribute reason.
70 71 72 |
# File 'lib/handsoap/service.rb', line 70 def reason @reason end |
Class Method Details
.from_xml(node, options = { :namespace => nil }) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/handsoap/service.rb', line 82 def self.from_xml(node, = { :namespace => nil }) if not [:namespace] raise "Missing option :namespace" end ns = { 'env' => [:namespace] } # tries to find SOAP1.2 fault code fault_code = node.xpath("./env:Code/env:Value", ns).to_s # if no SOAP1.2 fault code was found, try the SOAP1.1 way unless fault_code fault_code = node.xpath('./faultcode', ns).to_s # if fault_code is blank, add the namespace and try again unless fault_code fault_code = node.xpath("//env:faultcode", ns).to_s end end # tries to find SOAP1.2 reason reason = node.xpath("./env:Reason/env:Text[1]", ns).to_s # if no SOAP1.2 faultstring was found, try the SOAP1.1 way unless reason reason = node.xpath('./faultstring', ns).to_s # if reason is blank, add the namespace and try again unless reason reason = node.xpath("//env:faultstring", ns).to_s end end details = node.xpath('./detail/*', ns) self.new(fault_code, reason, details) end |
Instance Method Details
#to_s ⇒ Object
78 79 80 |
# File 'lib/handsoap/service.rb', line 78 def to_s "Handsoap::Fault { :code => '#{@code}', :reason => '#{@reason}' }" end |