lib/libis/services/alma/sru_service.rb in libis-services-0.1.3 vs lib/libis/services/alma/sru_service.rb in libis-services-0.1.5

- old
+ new

@@ -13,25 +13,33 @@ def initialize(url = 'https://eu.alma.exlibrisgroup.com/view/sru') configure(url) end def search(field, value, library = '32KUL_LIBIS_NETWORK') + result = get library, version: '1.2', operation: 'searchRetrieve', recordSchema: 'marcxml', query: "#{field}=#{value}" - unless result['//diag:diagnostic'].blank? - raise Libis::Services::ServiceError, "#{result['/searchRetrieveResponse/diag:diagnostic/diag:message']}" - end + if result.is_a?(Libis::Tools::XmlDocument) - result.xpath('//record').map do |record| - Libis::Tools::XmlDocument.parse(record.to_s) + unless result['//diag:diagnostic'].blank? + raise Libis::Services::ServiceError, "#{result['/searchRetrieveResponse/diag:diagnostic/diag:message']}" + end + + return result.xpath('//record').map do |record| + Libis::Tools::XmlDocument.parse(record.to_s) + end end + + raise Libis::Services::ServiceError, "#{result[:error_type]} - #{result[:error_name]}" if result[:error_type] + raise Libis::Services::ServiceError, "Unexpected reply: '#{result.to_s}' (#{result.class})" + end protected def result_parser(response) - Libis::Tools::XmlDocument.parse(response) + Libis::Tools::XmlDocument.parse(response) rescue response end end end end