lib/soapy_cake/response.rb in soapy_cake-1.13.0 vs lib/soapy_cake/response.rb in soapy_cake-1.13.1

- old
+ new

@@ -36,15 +36,26 @@ config.ignore_namespaces! end end def check_errors! - fault = sax.for_tag(:fault).first - fail RequestFailed, fault[:reason][:text] if fault + # If we get a lot of data in our response, we can assume there was no error. + # This saves a lot of time because we don't have to scan the whole XML tree for errors. + return if body.length > 8192 + error_check_fault! return if error_check_special_case? + error_check_success! + end - fail RequestFailed, error_message unless sax.for_tag(:success).first == 'true' + def error_check_fault! + fault = sax.for_tag(:fault).first + fail RequestFailed, fault[:reason][:text] if fault + end + + def error_check_success! + return if sax.for_tag(:success).first == 'true' + fail RequestFailed, error_message end def error_check_special_case? # Don't ask... # As you might imagine, CAKE simply does not return the success element