Class: Libis::Services::Alma::SruService

Inherits:
Object
  • Object
show all
Includes:
RestClient
Defined in:
lib/libis/services/alma/sru_service.rb

Instance Attribute Summary

Attributes included from RestClient

#client

Instance Method Summary collapse

Methods included from RestClient

#configure, #get, #post_data, #post_url, #put_data, #put_url

Constructor Details

#initialize(url = 'https://eu.alma.exlibrisgroup.com/view/sru') ⇒ SruService

Returns a new instance of SruService.



13
14
15
# File 'lib/libis/services/alma/sru_service.rb', line 13

def initialize(url = 'https://eu.alma.exlibrisgroup.com/view/sru')
  configure(url)
end

Instance Method Details

#search(field, value, library = '32KUL_LIBIS_NETWORK') ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/libis/services/alma/sru_service.rb', line 17

def search(field, value, library = '32KUL_LIBIS_NETWORK')

  result = get library, version: '1.2', operation: 'searchRetrieve', recordSchema: 'marcxml',
               query: "#{field}=#{value}"

  if result.is_a?(Libis::Tools::XmlDocument)

    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