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