cdmbl 0.14.0 → 0.15.0

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
- SHA1:
3
- metadata.gz: 417415def1b0f28a66e6640201a3c53becf43737
4
- data.tar.gz: 36d22cc2acaab58453bb908877af79f2fe93ddba
2
+ SHA256:
3
+ metadata.gz: 637df7b53cd7d660727a0a8d55fa7847d7cba6c442f0a5aa44accd652bc1efed
4
+ data.tar.gz: debd85256ed204a7c58de43e2db284ffeaaaafd4dc63bc59693d965c211f81e8
5
5
  SHA512:
6
- metadata.gz: 6a4a95dbdf25f2cfd26d2d037b900d07850bf4be2c50112319bcfd220cbddcf7e0325b62ff45267b9cddb0fc135291d946509e8bfe5a78486c5231e1665f7354
7
- data.tar.gz: bc2795036b04aed45ac8be18829450001c08091b2df7c7af089b7faf1779d422ffb14e0610d5a9c3306b981bcbedcb584ef3b89b70a8fcdf94a81ff6dcd55752
6
+ metadata.gz: 2a803c89d9a67faa6f706dd1a6f8cf1c3b8d535cda68dd7ef0d5102b7c5201b08dd84d31cb7d0571a957fed3f1f84e76c54bf117c11ee64e288bbba96a113a2a
7
+ data.tar.gz: f6878f26d9151558bbde5e0a3a10c8a793123b8c686b3815b543835a42423b87f8f5a3ae01fef834432941a710692d654b6c60052de5121f53454607664180a3
data/cdmbl.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib']
19
19
 
20
20
  spec.add_dependency 'hash_at_path', '~> 0.1'
21
- spec.add_dependency 'contentdm_api', '~> 0.3.11'
21
+ spec.add_dependency 'contentdm_api', '~> 0.4.1'
22
22
  spec.add_dependency 'sidekiq', '>= 3.5'
23
23
  spec.add_dependency 'titleize', '~> 1.4'
24
24
  spec.add_dependency 'rsolr', '~> 2.0'
@@ -32,6 +32,4 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'rake', '~> 12.0'
33
33
  spec.add_development_dependency 'minitest', '~> 5.0'
34
34
  spec.add_development_dependency 'yard', '~> 0.9.0'
35
- spec.add_development_dependency 'webmock', '~> 1.24', '>= 1.24.0'
36
- spec.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.1'
37
35
  end
@@ -0,0 +1,90 @@
1
+ require 'sidekiq'
2
+ module CDMBL
3
+ class CdmRequestWorker
4
+ include Sidekiq::Worker
5
+ attr_reader :collection,
6
+ :id,
7
+ :set_lookup,
8
+ :field_mappings
9
+
10
+ attr_writer :cdm_api_klass,
11
+ :oai_request_klass,
12
+ :oai_set_lookup_klass,
13
+ :cdm_notification_klass,
14
+ :load_worker_klass,
15
+ :transformer_klass
16
+
17
+ def perform(collection, id)
18
+
19
+ @identifiers = identifiers
20
+ @solr_config = solr_config
21
+ @cdm_endpoint = cdm_endpoint
22
+ @oai_endpoint = oai_endpoint
23
+ @field_mappings = field_mappings
24
+ @extract_compounds = extract_compounds
25
+ transform_and_load!
26
+ end
27
+
28
+ def oai_set_lookup_klass
29
+ @oai_set_lookup_klass ||= OAISetLookup
30
+ end
31
+
32
+ def oai_request_klass
33
+ @oai_request_klass ||= OaiRequest
34
+ end
35
+
36
+ def cdm_api_klass
37
+ @cdm_api_klass ||= CONTENTdmAPI::Item
38
+ end
39
+
40
+ def cdm_notification_klass
41
+ @cdm_notification_klass ||= CdmNotification
42
+ end
43
+
44
+ def transformer_klass
45
+ @transformer_klass ||= Transformer
46
+ end
47
+
48
+ def load_worker_klass
49
+ @load_worker_klass ||= LoadWorker
50
+ end
51
+
52
+ private
53
+
54
+ def transform_and_load!
55
+ load_worker_klass.perform_async(transformed_records, [], solr_config)
56
+ end
57
+
58
+ def transformed_records
59
+ @transformation ||=
60
+ transformer_klass.new(cdm_records: records,
61
+ oai_sets: set_lookup,
62
+ field_mappings: field_mappings,
63
+ extract_compounds: extract_compounds).records
64
+ end
65
+
66
+ def set_lookup
67
+ oai_set_lookup_klass.new(oai_sets: sets).keyed
68
+ end
69
+
70
+ def records
71
+ identifiers.map do |identifier|
72
+ cdm_request(*identifier)
73
+ end
74
+ end
75
+
76
+ # e.g. local_identifiers.map { |identifier| extractor.cdm_request(*identifier) }
77
+ def cdm_request(collection, id)
78
+ cdm_notification_klass.call!(collection, id, cdm_endpoint)
79
+ cdm_api_klass.new(base_url: cdm_endpoint,
80
+ collection: collection,
81
+ with_compounds: false,
82
+ id: id)
83
+ end
84
+
85
+ def sets
86
+ @oai_request ||=
87
+ oai_request_klass.new(base_uri: oai_endpoint).sets
88
+ end
89
+ end
90
+ end
@@ -1,10 +1,12 @@
1
+
1
2
  require 'json'
3
+ require 'http'
2
4
  module CDMBL
3
5
  class OaiClient
4
- attr_reader :base_url, :http_client
5
- def initialize(base_url: '', http_client: Net::HTTP)
6
+ attr_reader :base_url, :client
7
+ def initialize(base_url: '', client: HTTP)
6
8
  @base_url = base_url
7
- @http_client = http_client
9
+ @client = client
8
10
  end
9
11
 
10
12
  def request(query)
@@ -14,7 +16,7 @@ module CDMBL
14
16
  private
15
17
 
16
18
  def get(url)
17
- http_client.get_response(URI(url)).body
19
+ client.get(url).to_s
18
20
  end
19
21
 
20
22
  def hashify(xml)
data/lib/cdmbl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module CDMBL
2
- VERSION = "0.14.0"
2
+ VERSION = "0.15.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cdmbl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - chadfennell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-07 00:00:00.000000000 Z
11
+ date: 2019-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hash_at_path
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.3.11
33
+ version: 0.4.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.3.11
40
+ version: 0.4.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sidekiq
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -150,46 +150,6 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.9.0
153
- - !ruby/object:Gem::Dependency
154
- name: webmock
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.24'
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- version: 1.24.0
163
- type: :development
164
- prerelease: false
165
- version_requirements: !ruby/object:Gem::Requirement
166
- requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '1.24'
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: 1.24.0
173
- - !ruby/object:Gem::Dependency
174
- name: vcr
175
- requirement: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '3.0'
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- version: 3.0.1
183
- type: :development
184
- prerelease: false
185
- version_requirements: !ruby/object:Gem::Requirement
186
- requirements:
187
- - - "~>"
188
- - !ruby/object:Gem::Version
189
- version: '3.0'
190
- - - ">="
191
- - !ruby/object:Gem::Version
192
- version: 3.0.1
193
153
  description:
194
154
  email:
195
155
  - fenne035@umn.edu
@@ -211,6 +171,7 @@ files:
211
171
  - lib/cdmbl.rb
212
172
  - lib/cdmbl/batch_deleter.rb
213
173
  - lib/cdmbl/batch_deleter_worker.rb
174
+ - lib/cdmbl/cdm_request_worker.rb
214
175
  - lib/cdmbl/compound_filter.rb
215
176
  - lib/cdmbl/compound_lookup.rb
216
177
  - lib/cdmbl/default_cdm_notification.rb
@@ -265,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
226
  version: '0'
266
227
  requirements: []
267
228
  rubyforge_project:
268
- rubygems_version: 2.6.13
229
+ rubygems_version: 2.7.8
269
230
  signing_key:
270
231
  specification_version: 4
271
232
  summary: Load CONTENTdm data into a Solr Index. CDMBL expects to run inside a Rails