Sha256: 80b71d9502575b85be6f3ec61af54d15d9a14ed93e12158e1c0778699626e186
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
module Amsi module Validator # Ensure there is no 'Fault' node in the response body class RequestFault FaultDetails = Struct.new(:custom_message, :exception_message, :log_id) private_constant :FaultDetails # @param response [Hash<String, Object>] the XML response parsed into a # Hash def initialize(response) @response = response end # @raise [Amsi::Error::RequestFault] if the response has a fault def validate! return unless error? raise Error::RequestFault.new(error_message, fault_code, details) end private attr_reader :response def fault response['soap:Envelope']['soap:Body']['soap:Fault'] end def details return unless fault['detail'] app_fault = fault['detail'].values.first FaultDetails.new( app_fault['CustomMessage'], app_fault['ExceptionMessage'], app_fault['LogId'] ) end def error? !fault.nil? end def fault_code return unless fault code = fault['faultcode'] code = code['__content__'] if code.is_a?(Hash) code.strip end def error_message return unless fault fault_string = fault['faultstring'] fault_string = fault_string['__content__'] if fault_string.is_a?(Hash) fault_string.strip end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
amsi-1.0.1 | lib/amsi/validator/request_fault.rb |
amsi-1.0.0 | lib/amsi/validator/request_fault.rb |