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