libis-services 1.0.10 → 1.0.12

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
  SHA256:
3
- metadata.gz: 286b07cf808e2a2e50a5cde29b49e6a9f9162a43598a45ed11f5460a69855046
4
- data.tar.gz: 2ac35bfbbf62ba56ea718a41297aed33cf2e45bf1123a9938f7a1ba52de24b10
3
+ metadata.gz: 0cb4a19cf2e21d0a98cc25d510e0c3509b2a9a8ac64de25f42ae2db62066295b
4
+ data.tar.gz: 9b60e51ed5881010fcde0ff7918368d9db43e7bbf26172bdde1674a44a250176
5
5
  SHA512:
6
- metadata.gz: 6e00164a2d67021f72ba76e6880291809460604f4db62900b4c7e8c39acc314466129f064c7c6a6c329c2668326fe353a82db1163a1f3beffc51e634e07f9e4d
7
- data.tar.gz: 3cadc5af5ed9ca5f07766ba9bebd9bd517c046465d6e32b43e7796d68e5e6ac9fb6d8f3ef6ae7a7196fc836731970794db1fe86ae56eff7c2f18347af9d6f2e9
6
+ metadata.gz: cce6bcd91d6f976253d6539b9e114409f14316757e6f06b06c9b3a08fcdb0200f1e3211f508650b9c435216fb29260e7e3ece0455491ea631ffd9be1ebe131ee
7
+ data.tar.gz: 0dec285395763bf5497f3da62a8ff769bc8f7edb0bee055d28e0971bb25eed697ef72421731d4cada038cd923cf6f046c15efeeb1eb7b5de014234e373769d19
@@ -1,5 +1,6 @@
1
1
  require 'oai'
2
2
  require 'libis/tools/extend/hash'
3
+ require 'libis/tools/xml_document'
3
4
  require 'libis/services/service_error'
4
5
 
5
6
  module Libis
@@ -8,15 +9,24 @@ module Libis
8
9
  include OAI::XPath
9
10
 
10
11
  class Query
11
- attr_accessor :from, :until, :set, :metadata_prefix
12
12
 
13
- def intialize(metadata_prefix = 'oai_dc')
14
- @from = @until = @set = nil
15
- @metadata_prefix = metadata_prefix
13
+ def initialize(options = {})
14
+ @options = options
15
+ @options[:metadata_prefix] ||= 'oai_dc'
16
+ end
17
+
18
+ def [](key, value)
19
+ @options[key] = value
16
20
  end
17
21
 
18
22
  def to_hash
19
- { from: @from, until: @until, metadata_prefix: @metadata_prefix, set: @set }.cleanup
23
+ {
24
+ from: @options[:from],
25
+ until: @options[:until],
26
+ metadata_prefix: @options[:metadata_prefix],
27
+ set: @options[:set],
28
+ resumption_token: @options[:token] || @options[:resumption_token]
29
+ }.cleanup
20
30
  end
21
31
 
22
32
  end
@@ -35,28 +45,41 @@ module Libis
35
45
  do_oai_request(:list_sets, options)
36
46
  end
37
47
 
38
- def metdata_formats(identifier = nil)
48
+ def metadata_formats(identifier = nil)
39
49
  do_oai_request(:list_metadata_formats, {identifier: identifier})
40
50
  end
41
51
 
42
- def identifiers(token = nil, query = Query.new)
43
- options = token ? {resumption_token: token} : query.to_hash
44
- do_oai_request(:list_identifiers, options)
52
+ def identifiers(token_or_query = nil)
53
+ do_oai_request(:list_identifiers, token_or_query_to_hash(token_or_query))
45
54
  end
46
55
 
47
- def records(token = nil, query = Query.new)
48
- options = token ? {resumption_token: token} : query.to_hash
49
- do_oai_request(:list_records, options)
56
+ def records(token_or_query = nil)
57
+ do_oai_request(:list_records, token_or_query_to_hash(token_or_query))
50
58
  end
51
59
 
52
- def record(identifier, metadata_prefix)
60
+ def record(identifier, metadata_prefix = 'oai_dc')
53
61
  do_oai_request(:get_record, identifier: identifier, metadata_prefix: metadata_prefix)
54
62
  end
55
63
 
56
- private
64
+ protected
65
+
66
+ def token_or_query_to_hash(token_or_query)
67
+ case token_or_query
68
+ when Hash
69
+ Query.new(token_or_query).to_hash
70
+ when Query
71
+ token_or_query.to_hash
72
+ when String
73
+ { resumption_token: token_or_query }
74
+ else
75
+ {}
76
+ end
77
+ end
57
78
 
79
+ private
80
+
58
81
  def do_oai_request(method, options = {})
59
- response = @oai_client.send(method, options.cleanup)
82
+ response = options.cleanup.empty? ? @oai_client.send(method): @oai_client.send(method, options.cleanup)
60
83
  object_to_hash(response)
61
84
  rescue OAI::Exception => e
62
85
  raise Libis::Services::ServiceError, "OAI Error: #{e.code} - #{e.message}"
@@ -71,7 +94,7 @@ module Libis
71
94
  h[k] = object_to_hash(v)
72
95
  end
73
96
  when REXML::Element
74
- obj.to_s
97
+ Libis::Tools::XmlDocument.parse(obj.to_s).to_hash
75
98
  when OAI::Response, OAI::Header, OAI::Record, OAI::MetadataFormat, OAI::Set
76
99
  result = obj.instance_variables.map do |x|
77
100
  x[1..-1].to_sym
@@ -60,6 +60,15 @@ module Libis
60
60
  oci.exec(statement, *bindvars, &block)
61
61
  end
62
62
 
63
+ def parse(statement)
64
+ oci.parse(statement)
65
+ end
66
+
67
+ def cursor_exec(cursor, **binvars)
68
+ bindvars.each { |k, v| cursor.bind_param(k, v) }
69
+ cursor.exec
70
+ end
71
+
63
72
  def table(name)
64
73
  metadata = oci.describe_table(name)
65
74
  {
@@ -28,7 +28,7 @@ module Libis
28
28
  ]
29
29
  end
30
30
  opts = {strip_namespaces: true, logger: ::Libis::Tools::Config.logger}.merge options
31
- base_url = opts.delete(:url) || 'http://depot.lias.be'
31
+ base_url = opts.delete(:url) || 'https://repository.teneo.libis.be'
32
32
  configure "#{base_url}/dpsws/#{section}/#{service}?wsdl", opts
33
33
  end
34
34
 
@@ -12,7 +12,7 @@ module Libis
12
12
  class CollectionHandler < Libis::Services::Rosetta::Client
13
13
 
14
14
 
15
- def initialize(base_url = 'http://depot.lias.be', options = {})
15
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
16
16
  super 'repository', 'CollectionWebServices', {url: base_url}.merge(options)
17
17
  end
18
18
 
@@ -9,7 +9,7 @@ module Libis
9
9
 
10
10
  class DepositHandler < ::Libis::Services::Rosetta::Client
11
11
 
12
- def initialize(base_url = 'http://depot.lias.be', options = {})
12
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
13
13
  super 'deposit', 'DepositWebServices', {url: base_url}.merge(options)
14
14
  end
15
15
 
@@ -10,18 +10,18 @@ module Libis
10
10
 
11
11
  class IeHandler < Libis::Services::Rosetta::Client
12
12
 
13
- def initialize(base_url = 'http://depot.lias.be', options = {})
13
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
14
14
  super 'repository', 'IEWebServices', {url: base_url}.merge(options)
15
15
  end
16
16
 
17
17
  def get_mets(ie, flags = 0)
18
18
  result = call_raw :get_ie, pds_handle: @pds_handle, ie_pid: ie, flags: flags
19
- Libis::Tools::MetsFile.parse(result[:get_ie])
19
+ Libis::Tools::MetsFile.parse(result)
20
20
  end
21
21
 
22
22
  def get_metadata(ie)
23
23
  result = call_raw :get_md, pds_handle: @pds_handle, 'PID' => ie
24
- Libis::Tools::MetsFile.parse(result[:get_md])
24
+ Libis::Tools::MetsFile.parse(result)
25
25
  end
26
26
 
27
27
  end
@@ -1,17 +1,17 @@
1
1
  require 'libis/services/oai'
2
+ require 'libis/tools/xml_document'
2
3
 
3
4
  module Libis
4
5
  module Services
5
6
  module Rosetta
6
7
  class OaiPmh < Libis::Services::Oai
7
8
 
8
- def initialize(base_url = 'http://depot.lias.be', options = {})
9
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
9
10
  super(base_url + '/oaiprovider/request')
10
11
  end
11
12
 
12
- def collections(institute, token = nil, query = Query.new)
13
- query.set = "#{institute}-collections"
14
- records(token, query)
13
+ def collections(institute, token_or_query = nil)
14
+ records(token_or_query_to_hash(token_or_query).merge(set: "#{institute}-collections"))
15
15
  end
16
16
 
17
17
  end
@@ -13,7 +13,7 @@ module Libis
13
13
  class ProducerHandler < Libis::Services::Rosetta::Client
14
14
 
15
15
 
16
- def initialize(base_url = 'http://depot.lias.be', options = {})
16
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
17
17
  super 'backoffice', 'ProducerWebServices', {url: base_url}.merge(options)
18
18
  end
19
19
 
@@ -26,7 +26,7 @@ module Libis
26
26
  attr_reader :pds_service, :producer_service, :deposit_service, :sip_service, :ie_service, :collection_service
27
27
 
28
28
  # @param [String] base_url
29
- def initialize(base_url = 'http://depot.lias.be', pds_url = 'https://pds.libis.be', opts = {})
29
+ def initialize(base_url = 'https://repository.teneo.libis.be', pds_url = 'https://pds.libis.be', opts = {})
30
30
  @pds_service = Libis::Services::Rosetta::PdsHandler.new pds_url
31
31
  @producer_service = Libis::Services::Rosetta::ProducerHandler.new base_url, opts
32
32
  @deposit_service = Libis::Services::Rosetta::DepositHandler.new base_url, opts
@@ -11,7 +11,7 @@ module Libis
11
11
 
12
12
  class SipHandler < Libis::Services::Rosetta::Client
13
13
 
14
- def initialize(base_url = 'http://depot.lias.be', options = {})
14
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
15
15
  super 'repository', 'SipWebServices', {url: base_url}.merge(options)
16
16
  end
17
17
 
@@ -10,7 +10,7 @@ module Libis
10
10
 
11
11
  class UserManager < Libis::Services::Rosetta::Client
12
12
 
13
- def initialize(base_url = 'http://depot.lias.be', options = {})
13
+ def initialize(base_url = 'https://repository.teneo.libis.be', options = {})
14
14
  super 'infra', 'UserManagerWS', {url: base_url}.merge(options)
15
15
  end
16
16
 
@@ -1,5 +1,5 @@
1
1
  module Libis
2
2
  module Services
3
- VERSION = '1.0.10'
3
+ VERSION = '1.0.12'
4
4
  end
5
5
  end
@@ -27,12 +27,13 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'simplecov', '~> 0.9'
28
28
  spec.add_development_dependency 'coveralls', '~> 0.7'
29
29
  spec.add_development_dependency 'equivalent-xml', '~> 0.6'
30
+ spec.add_development_dependency 'rexml'
30
31
 
31
32
  spec.add_runtime_dependency 'libis-tools', '~> 1.0'
32
- spec.add_runtime_dependency 'highline', '~> 1.7'
33
+ spec.add_runtime_dependency 'highline', '~> 2.0'
33
34
  spec.add_runtime_dependency 'savon', '~> 2.11'
34
35
  spec.add_runtime_dependency 'rest-client', '~> 2.0'
35
- spec.add_runtime_dependency 'oai', '~> 0.4'
36
+ spec.add_runtime_dependency 'oai', '~> 1.0'
36
37
  spec.add_runtime_dependency 'ruby-oci8', '~> 2.2.2' unless RUBY_PLATFORM == 'java'
37
38
  spec.add_runtime_dependency 'virtus', '~> 1.0'
38
39
  spec.add_runtime_dependency 'write_xlsx', '~> 0.83'
@@ -6,146 +6,17 @@ require 'libis/services/alma/sru_service'
6
6
 
7
7
  describe 'Alma' do
8
8
 
9
- # noinspection RubyLiteralArrayInspection
10
- let(:record) {
11
- {
12
- leader: '01960nas a2200553u 4500',
13
- controlfield: ['9930800070101471', '20170602113306.0', '881205c19679999be r|p|| 0|||a|dut c'],
14
- datafield: [
15
- {
16
- subfield: '(BeLVLBS)003080007LBS01-Aleph',
17
- :@tag => '035', :@ind1 => ' ', :@ind2 => ' '
18
- }, {
19
- subfield: 'Kerk en leven. Bisdom Antwerpen (0991)',
20
- :@tag => '245', :@ind1 => '0', :@ind2 => '0'
21
- }, {
22
- subfield: 'K & L',
23
- :@tag => '246', :@ind1 => '3', :@ind2 => '3'
24
- }, {
25
- subfield: ['Antwerpen', 'Kerk en leven,', '1967-.'],
26
- :@tag => '260', :@ind1 => ' ', :@ind2 => ' '
27
- }, {
28
- subfield: 'Weekly',
29
- :@tag => '310', :@ind1 => ' ', :@ind2 => ' '
30
- }, {
31
- subfield: %w(text rdacontent),
32
- :@tag => '336', :@ind1 => ' ', :@ind2 => ' '
33
- }, {
34
- subfield: %w(computer rdamedia),
35
- :@tag => '337', :@ind1 => ' ', :@ind2 => ' '
36
- }, {
37
- subfield: ['online resource', 'rdacarrier'],
38
- :@tag => '338', :@ind1 => ' ', :@ind2 => ' '
39
- }, {
40
- subfield: 'Online',
41
- :@tag => '340', :@ind1 => ' ', :@ind2 => ' '
42
- }, {
43
- subfield: 'Digitale kopie van de gedrukte uitgave',
44
- :@tag => '500', :@ind1 => ' ', :@ind2 => ' '
45
- }, {
46
- subfield: ['KADOC', 'C1', 'Kerken en religie', '(ODIS-HT)'],
47
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
48
- }, {
49
- subfield: ['KADOC', 'Antwerpen [deelgemeente in gemeente Antwerpen - BE]', '(ODIS-GEO)10560000006504'],
50
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
51
- }, {
52
- subfield: ['KADOC', 'Bisdom Antwerpen (1961-heden)', '(ODIS-ORG)9284'],
53
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
54
- }, {
55
- subfield: ['KADOC', 'Studiecentrum voor Zielzorg en Predicatie', '(ODIS-ORG)24894'],
56
- :@tag => '650', :@ind1 => ' ', :@ind2 => '7'
57
- }, {
58
- subfield: 'E-journals',
59
- :@tag => '653', :@ind1 => ' ', :@ind2 => '6'
60
- }, {
61
- subfield: 'Collectie Kerk en Leven',
62
- :@tag => '699', :@ind1 => ' ', :@ind2 => ' '
63
- }, {
64
- subfield: 'KYE000486',
65
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
66
- }, {
67
- subfield: ['EKAD', '(1967)7-35, 37-52'],
68
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
69
- }, {
70
- subfield: ['EKAD', '(1968)1-14, 17-49'],
71
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
72
- }, {
73
- subfield: ['EKAD', '(1969)1-10, 12-37, 39-49'],
74
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
75
- }, {
76
- subfield: ['EKAD', '(1970)1-50 volledig'],
77
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
78
- }, {
79
- subfield: ['EKAD', '(1971)1-28, 30-31, 33-37, 41-49'],
80
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
81
- }, {
82
- subfield: ['EKAD', '(1972)22, 30-32, 34-36, 38-50'],
83
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
84
- }, {
85
- subfield: ['EKAD', '(1973)1-50 volledig'],
86
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
87
- }, {
88
- subfield: ['EKAD', '(1974)1-25, 27-50'],
89
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
90
- }, {
91
- subfield: ['EKAD', '(1975)-(1992)volledig'],
92
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
93
- }, {
94
- subfield: ['EKAD', '(1993)1-10, 12-50'],
95
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
96
- }, {
97
- subfield: ['EKAD', '(1994)-(1996)volledig'],
98
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
99
- }, {
100
- subfield: ['EKAD', '(1997)volledig'],
101
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
102
- }, {
103
- subfield: ['EKAD', '(1998)1-53'],
104
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
105
- }, {
106
- subfield: ['EKAD', '(2000)1-16, 18-52'],
107
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
108
- }, {
109
- subfield: ['EKAD', '(2001)-(2003)volledig'],
110
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
111
- }, {
112
- subfield: ['EKAD', '(2004)1-53'],
113
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
114
- }, {
115
- subfield: ['EKAD', '(2005)1-8, 10-52'],
116
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
117
- }, {
118
- subfield: ['EKAD', '(2006)1-26, 29, 32-52'],
119
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
120
- }, {
121
- subfield: ['EKAD', '(2007)39-42, 44, 46-49, 51-52'],
122
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
123
- }, {
124
- subfield: ['EKAD', '(2008)1-28, 32-53'],
125
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
126
- }, {
127
- subfield: ['EKAD', '(2009)1-34, 36-38'],
128
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
129
- }, {
130
- subfield: ['EKAD', '(2011)1-13, 15-36, 45-52'],
131
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
132
- }, {
133
- subfield: ['EKAD', 'KADOC elektronische tijdschriften'],
134
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
135
- }, {
136
- subfield: ['EKAD', 'KADOC lopende periodiek'],
137
- :@tag => '983', :@ind1 => ' ', :@ind2 => ' '
138
- }
139
- ],
140
- }
141
- }
142
-
143
9
  context 'API service' do
144
10
  let(:subject) { Libis::Services::Alma::WebService.new }
11
+ let(:record) { Hash.new }
145
12
 
146
13
  context 'marc' do
147
14
 
148
15
  before {
16
+ data = Libis::Services::Alma::SruService.new.search('alma.local_field_983', 'KYE000486')
17
+ data = data.first.to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
18
+
19
+ record = data[:record]
149
20
  record[:controlfield][0] = '9930800070101480'
150
21
  record[:datafield].insert(1, {
151
22
  subfield: '(EXLNZ-32KUL_LIBIS_NETWORK)9930800070101471',
@@ -170,9 +41,16 @@ describe 'Alma' do
170
41
 
171
42
  context 'SRU service' do
172
43
  let(:subject) { Libis::Services::Alma::SruService.new }
44
+ let(:record) { Hash.new }
173
45
 
174
46
  context 'marc' do
175
47
 
48
+ before {
49
+ data = Libis::Services::Alma::WebService.new.get_marc('9930800070101480', 'l7xx8879c82a7d7b453a887a6e6dca8300fd').
50
+ to_hash(:convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
51
+ record = data[:bib][:record]
52
+ record.cleanup!
53
+ }
176
54
 
177
55
  it 'search' do
178
56
  result = subject.search('alma.local_field_983', 'KYE000486')