libis-services 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 318010003c7113812cdd946fbcf1fa08d17c2cf1
4
- data.tar.gz: 9de9e7e1704b2c88802712b7026d3f0f30c657c9
3
+ metadata.gz: 16c6005df56e91ea7b9806570aefb5a024bc01a4
4
+ data.tar.gz: 4ab1b7d063c4f2aaf10143aca268051c176e56da
5
5
  SHA512:
6
- metadata.gz: 2796791d1a98c0925200f0396c0403cafb425b4a981506138e092c1c68947b431c9dd0fe2579a553fcf6221e54e6d96dab31b8a78a51ab802934cbc781b4e257
7
- data.tar.gz: 6144003a1920af9fe1d3252c4997765298a3aef69e7fce567ee69450e12d76c5cc65e79c0b423fc50f789a8cb5bab9bf68247006b42220862c4ad2a4511016c4
6
+ metadata.gz: d1d1080408037cc6725bcd78a3001269f733f8d8b06e7b8b32ad926c68425662f0050460da1233575787eb512eca4798ac371cf697fad1e60fcbe8c926a7b87e
7
+ data.tar.gz: d41b1ef29ba1a94f66ab93c135d3383be513c6fde2180ab85998e096dc6174bfc5fef93014ce8c96be71b5c568f8670c398a2c251954c7dfd377f1f8c16ba041
@@ -0,0 +1,39 @@
1
+ # coding: utf-8
2
+ require 'libis-tools'
3
+ require 'libis/services/service_error'
4
+ require 'libis/services/rest_client'
5
+
6
+ module Libis
7
+ module Services
8
+ module Alma
9
+
10
+ class SruService
11
+ include ::Libis::Services::RestClient
12
+
13
+ def initialize(url = 'https://eu.alma.exlibrisgroup.com/view/sru')
14
+ configure(url)
15
+ end
16
+
17
+ def search(field, value, library = '32KUL_LIBIS_NETWORK')
18
+ result = get library, version: '1.2', operation: 'searchRetrieve', recordSchema: 'marcxml',
19
+ query: "#{field}=#{value}"
20
+
21
+ unless result['//diag:diagnostic'].blank?
22
+ raise Libis::Services::ServiceError, "#{result['/searchRetrieveResponse/diag:diagnostic/diag:message']}"
23
+ end
24
+
25
+ result.xpath('//record').map do |record|
26
+ Libis::Tools::XmlDocument.parse(record.to_s)
27
+ end
28
+ end
29
+
30
+ protected
31
+
32
+ def result_parser(response)
33
+ Libis::Tools::XmlDocument.parse(response)
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -15,12 +15,6 @@ module Libis
15
15
  end
16
16
 
17
17
  def get_marc(alma_id, apikey = nil)
18
- apikey ||= case alma_id
19
- when /1480$/
20
- 'l7xx8879c82a7d7b453a887a6e6dca8300fd'
21
- else
22
- raise Libis::Services::ServiceError, "No Alma API key available for '#{alma_id}'"
23
- end
24
18
  get alma_id, apikey: apikey
25
19
  end
26
20
 
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Services
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
5
5
  end
@@ -2,103 +2,129 @@ require_relative 'spec_helper'
2
2
  require 'awesome_print'
3
3
 
4
4
  require 'libis/services/alma/web_service'
5
+ require 'libis/services/alma/sru_service'
5
6
 
6
- describe 'Alma web service' do
7
- let(:subject) { Libis::Services::Alma::WebService.new }
7
+ describe 'Alma' do
8
8
 
9
- context 'marc' do
9
+ let(:record) {
10
+ {
11
+ leader: '01206nas 2200337u 4500',
12
+ controlfield: ['9930800070101471', '20151015113543.0', '881205c19679999be r|p|| 0|||a|dut c'],
13
+ datafield: [
14
+ {
15
+ subfield: '(BeLVLBS)003080007LBS01-Aleph',
16
+ :@tag => '035', :@ind1 => ' ', :@ind2 => ' '
17
+ }, {
18
+ subfield: 'Kerk en leven. Bisdom Antwerpen (0991).',
19
+ :@tag => '245', :@ind1 => '0', :@ind2 => '0'
20
+ }, {
21
+ subfield: 'K & L',
22
+ :@tag => '246', :@ind1 => '3', :@ind2 => '3'
23
+ }, {
24
+ subfield: ['Antwerpen', 'Kerk en leven,', '1967-.'],
25
+ :@tag => '260', :@ind1 => ' ', :@ind2 => ' '
26
+ }, {
27
+ subfield: 'Weekly',
28
+ :@tag => '310', :@ind1 => ' ', :@ind2 => ' '
29
+ }, {
30
+ subfield: %w(text rdacontent),
31
+ :@tag => '336', :@ind1 => ' ', :@ind2 => ' '
32
+ }, {
33
+ subfield: %w(computer rdamedia),
34
+ :@tag => '337', :@ind1 => ' ', :@ind2 => ' '
35
+ }, {
36
+ subfield: ['online resource', 'rdacarrier'],
37
+ :@tag => '338', :@ind1 => ' ', :@ind2 => ' '
38
+ }, {
39
+ subfield: 'Online',
40
+ :@tag => '340', :@ind1 => ' ', :@ind2 => ' '
41
+ }, {
42
+ subfield: 'Digitale kopie van de gedrukte uitgave',
43
+ :@tag => '500', :@ind1 => ' ', :@ind2 => ' '
44
+ }, {
45
+ subfield: 'E-journals',
46
+ :@tag => '653', :@ind1 => ' ', :@ind2 => '6'
47
+ }, {
48
+ subfield: 'Collectie Kerk en Leven',
49
+ :@tag => '699', :@ind1 => ' ', :@ind2 => ' '
50
+ }, {
51
+ subfield: ['KADOC', 'C1', 'Kerken en religie', '(ODIS-HT)'],
52
+ :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
53
+ }, {
54
+ subfield: ['KADOC', 'Antwerpen [deelgemeente in gemeente Antwerpen - BE]', '(ODIS-GEO)10560000006504'],
55
+ :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
56
+ }, {
57
+ subfield: ['KADOC', 'Bisdom Antwerpen (1961-heden)', '(ODIS-ORG)9284'],
58
+ :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
59
+ }, {
60
+ subfield: ['KADOC', 'Studiecentrum voor Zielzorg en Predicatie', '(ODIS-ORG)24894'],
61
+ :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
62
+ }, {
63
+ subfield: 'KYE000486',
64
+ :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
65
+ }, {
66
+ subfield: ['EKAD', '(2007)39-42, 44, 46-49, 51-52'],
67
+ :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
68
+ }, {
69
+ subfield: ['EKAD', '(2008)1-28, 32-53'],
70
+ :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
71
+ }, {
72
+ subfield: ['EKAD', '(2009)1-34, 36-38'],
73
+ :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
74
+ }, {
75
+ subfield: ['EKAD', '(2011)1-13, 15-36, 45-52'],
76
+ :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
77
+ }, {
78
+ subfield: ['EKAD', 'KADOC elektronische tijdschriften'],
79
+ :@tag => '995', :@ind1 => ' ', :@ind2 => ' '
80
+ }, {
81
+ subfield: ['EKAD', 'KADOC lopende periodiek'],
82
+ :@tag => '995', :@ind1 => ' ', :@ind2 => ' '
83
+ }
84
+ ],
85
+ }
86
+ }
87
+
88
+ context 'API service' do
89
+ let(:subject) { Libis::Services::Alma::WebService.new }
90
+
91
+ context 'marc' do
10
92
 
11
- let(:record) {
12
- {
13
- leader: '01206nas 2200337u 4500',
14
- controlfield: ['9930800070101480', '20151015113543.0', '881205c19679999be r|p|| 0|||a|dut c'],
15
- datafield: [
16
- {
17
- subfield: '(BeLVLBS)003080007LBS01-Aleph',
18
- :@tag => '035', :@ind1 => ' ', :@ind2 => ' '
19
- }, {
20
- subfield: '(EXLNZ-32KUL_LIBIS_NETWORK)9930800070101471',
21
- :@tag => '035', :@ind1 => ' ', :@ind2 => ' '
22
- }, {
23
- subfield: 'Kerk en leven. Bisdom Antwerpen (0991).',
24
- :@tag => '245', :@ind1 => '0', :@ind2 => '0'
25
- }, {
26
- subfield: 'K & L',
27
- :@tag => '246', :@ind1 => '3', :@ind2 => '3'
28
- }, {
29
- subfield: ['Antwerpen', 'Kerk en leven,', '1967-.'],
30
- :@tag => '260', :@ind1 => ' ', :@ind2 => ' '
31
- }, {
32
- subfield: 'Weekly',
33
- :@tag => '310', :@ind1 => ' ', :@ind2 => ' '
34
- }, {
35
- subfield: %w(text rdacontent),
36
- :@tag => '336', :@ind1 => ' ', :@ind2 => ' '
37
- }, {
38
- subfield: %w(computer rdamedia),
39
- :@tag => '337', :@ind1 => ' ', :@ind2 => ' '
40
- }, {
41
- subfield: ['online resource', 'rdacarrier'],
42
- :@tag => '338', :@ind1 => ' ', :@ind2 => ' '
43
- }, {
44
- subfield: 'Online',
45
- :@tag => '340', :@ind1 => ' ', :@ind2 => ' '
46
- }, {
47
- subfield: 'Digitale kopie van de gedrukte uitgave',
48
- :@tag => '500', :@ind1 => ' ', :@ind2 => ' '
49
- }, {
50
- subfield: 'E-journals',
51
- :@tag => '653', :@ind1 => ' ', :@ind2 => '6'
52
- }, {
53
- subfield: 'Collectie Kerk en Leven',
54
- :@tag => '699', :@ind1 => ' ', :@ind2 => ' '
55
- }, {
56
- subfield: ['KADOC', 'C1', 'Kerken en religie', '(ODIS-HT)'],
57
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
58
- }, {
59
- subfield: ['KADOC', 'Antwerpen [deelgemeente in gemeente Antwerpen - BE]', '(ODIS-GEO)10560000006504'],
60
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
61
- }, {
62
- subfield: ['KADOC', 'Bisdom Antwerpen (1961-heden)', '(ODIS-ORG)9284'],
63
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
64
- }, {
65
- subfield: ['KADOC', 'Studiecentrum voor Zielzorg en Predicatie', '(ODIS-ORG)24894'],
66
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
67
- }, {
68
- subfield: 'KYE000486',
69
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
70
- }, {
71
- subfield: ['EKAD', '(2007)39-42, 44, 46-49, 51-52'],
72
- :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
73
- }, {
74
- subfield: ['EKAD', '(2008)1-28, 32-53'],
75
- :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
76
- }, {
77
- subfield: ['EKAD', '(2009)1-34, 36-38'],
78
- :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
79
- }, {
80
- subfield: ['EKAD', '(2011)1-13, 15-36, 45-52'],
81
- :@tag => '993', :@ind1 => ' ', :@ind2 => ' '
82
- }, {
83
- subfield: ['EKAD', 'KADOC elektronische tijdschriften'],
84
- :@tag => '995', :@ind1 => ' ', :@ind2 => ' '
85
- }, {
86
- subfield: ['EKAD', 'KADOC lopende periodiek'],
87
- :@tag => '995', :@ind1 => ' ', :@ind2 => ' '
88
- }, {
89
- subfield: ['KADOC', 'online', '201510', 'W', 'Collectie Kerk en Leven', 'local'],
90
- :@tag => '996', :@ind1 => ' ', :@ind2 => ' '
91
- }
92
- ],
93
+ before {
94
+ record[:controlfield][0] = '9930800070101480'
95
+ record[:datafield].insert(1, {
96
+ subfield: '(EXLNZ-32KUL_LIBIS_NETWORK)9930800070101471',
97
+ :@tag => '035', :@ind1 => ' ', :@ind2 => ' '
98
+ })
99
+ record[:datafield] << {
100
+ subfield: ['KADOC', 'online', '201510', 'W', 'Collectie Kerk en Leven', 'local'],
101
+ :@tag => '996', :@ind1 => ' ', :@ind2 => ' '
102
+ }
93
103
  }
94
- }
95
104
 
96
- it 'get record' do
97
- result = subject.get_marc('9930800070101480', 'l7xx8879c82a7d7b453a887a6e6dca8300fd').
98
- to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
99
- check_container(record, result[:bib][:record])
105
+ it 'get record' do
106
+ result = subject.get_marc('9930800070101480', 'l7xx8879c82a7d7b453a887a6e6dca8300fd').
107
+ to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
108
+ check_container(record, result[:bib][:record])
109
+ end
110
+
100
111
  end
101
112
 
102
113
  end
103
114
 
115
+ context 'SRU service' do
116
+ let(:subject) { Libis::Services::Alma::SruService.new }
117
+
118
+ context 'marc' do
119
+
120
+
121
+ it 'search' do
122
+ result = subject.search('alma.local_field_983', 'KYE000486')
123
+ expect(result.size).to be 1
124
+ result = result.first.to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
125
+ check_container(record, result[:record])
126
+ end
127
+ end
128
+ end
129
+
104
130
  end
@@ -140,13 +140,27 @@ describe 'Rosetta Collection Service' do
140
140
  }
141
141
 
142
142
  let(:updated_name) { 'Stupid text' }
143
+ let(:updated_metadata) {
144
+ <<-STR.unindent.strip
145
+ <?xml version="1.0" encoding="UTF-8"?>
146
+ <dc:record xmlns:dc="http://purl.org/dc/elements/1.1/"
147
+ xmlns:dcterms="http://purl.org/dc/terms/"
148
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
149
+ <dc:title>Updated DC title</dc:title>
150
+ <dc:author>Autotest</dc:author>
151
+ <dcterms:created>2015-06-25 10:00</dcterms:created>
152
+ </dc:record>
153
+ STR
154
+ }
143
155
 
144
156
  let(:updated_collection) { collection_service.find(parent_name + '/' + updated_name) }
145
157
 
146
158
  let(:updated_collection_data) {
147
159
  updated_collection_data = new_collection_data.dup
148
160
  updated_collection_data[:name] = updated_name
149
- updated_collection_data
161
+ # updated_collection_data[:md_dc].delete :mid
162
+ updated_collection_data[:md_dc][:content] = updated_metadata
163
+ updated_collection_data.cleanup
150
164
  }
151
165
 
152
166
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-26 00:00:00.000000000 Z
11
+ date: 2016-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -221,6 +221,7 @@ files:
221
221
  - lib/libis-services.rb
222
222
  - lib/libis/services.rb
223
223
  - lib/libis/services/aleph/search.rb
224
+ - lib/libis/services/alma/sru_service.rb
224
225
  - lib/libis/services/alma/web_service.rb
225
226
  - lib/libis/services/collective_access.rb
226
227
  - lib/libis/services/collective_access/cataloguing.rb