pushmi_pullyu 1.0.5 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ require 'optparse'
4
4
  require 'rollbar'
5
5
  require 'singleton'
6
6
  require 'yaml'
7
+ require 'json'
7
8
 
8
9
  # CLI runner
9
10
  class PushmiPullyu::CLI
@@ -59,13 +60,14 @@ class PushmiPullyu::CLI
59
60
  Rollbar.configure do |config|
60
61
  config.enabled = false unless options[:rollbar][:token].present?
61
62
  config.access_token = options[:rollbar][:token]
62
-
63
+ config.use_exception_level_filters_default = true
64
+ config.exception_level_filters['IOError'] = 'ignore'
63
65
  # add a filter after Rollbar has built the error payload but before it is delivered to the API,
64
66
  # in order to strip sensitive information out of certain error messages
65
67
  exception_message_transformer = proc do |payload|
66
- clean_message = payload[:exception].message.sub(/http:\/\/.+:.+@(.+)\/fedora\/rest\/prod\/(.*)/,
67
- "http://\1/fedora/rest/prod/\2")
68
- payload[:exception] = payload[:exception].exception(clean_message)
68
+ clean_message = payload[:exception][:message].sub(/http:\/\/.+:.+@(.+)\/aip\/v1\/(.*)/,
69
+ "http://\1/aip/v1/\2")
70
+ payload[:exception][:message] = clean_message
69
71
  payload[:message] = clean_message
70
72
  end
71
73
 
@@ -87,7 +89,7 @@ class PushmiPullyu::CLI
87
89
 
88
90
  def parse_config(config_file)
89
91
  if File.exist?(config_file)
90
- YAML.safe_load(ERB.new(IO.read(config_file)).result).deep_symbolize_keys || {}
92
+ YAML.safe_load(ERB.new(File.read(config_file)).result).deep_symbolize_keys || {}
91
93
  else
92
94
  {}
93
95
  end
@@ -180,26 +182,29 @@ class PushmiPullyu::CLI
180
182
  end
181
183
 
182
184
  def run_preservation_cycle
183
- item = queue.wait_next_item
184
- return unless item.present?
185
+ entity_json = JSON.parse(queue.wait_next_item)
186
+ entity = {
187
+ type: entity_json['type'],
188
+ uuid: entity_json['uuid']
189
+ }
190
+ return unless entity[:type].present? && entity[:uuid].present?
185
191
 
186
192
  # add additional information about the error context to errors that occur while processing this item.
187
- Rollbar.scoped(noid: item) do
188
- begin
189
- # Download AIP from Fedora, bag and tar AIP directory and cleanup after block code
190
- PushmiPullyu::AIP.create(item) do |aip_filename, aip_directory|
191
- # Push tarred AIP to swift API
192
- deposited_file = swift.deposit_file(aip_filename, options[:swift][:container])
193
- # Log successful preservation event to the log files
194
- PushmiPullyu::Logging.log_preservation_event(deposited_file, aip_directory)
195
- end
196
- # rubocop:disable Lint/RescueException
197
- rescue Exception => e
198
- Rollbar.error(e)
199
- logger.error(e)
200
- # TODO: we could re-raise here and let the daemon die on any preservation error, or just log the issue and
201
- # move on to the next item.
193
+ Rollbar.scoped(entity_uuid: entity[:uuid]) do
194
+ # Download AIP from Jupiter, bag and tar AIP directory and cleanup after
195
+ # block code
196
+ PushmiPullyu::AIP.create(entity) do |aip_filename, aip_directory|
197
+ # Push tarred AIP to swift API
198
+ deposited_file = swift.deposit_file(aip_filename, options[:swift][:container])
199
+ # Log successful preservation event to the log files
200
+ PushmiPullyu::Logging.log_preservation_event(deposited_file, aip_directory)
202
201
  end
202
+ # rubocop:disable Lint/RescueException
203
+ rescue Exception => e
204
+ Rollbar.error(e)
205
+ logger.error(e)
206
+ # TODO: we could re-raise here and let the daemon die on any preservation error, or just log the issue and
207
+ # move on to the next item.
203
208
  # rubocop:enable Lint/RescueException
204
209
  end
205
210
  end
@@ -244,12 +249,12 @@ class PushmiPullyu::CLI
244
249
  # On first call of shutdown, this will gracefully close the main run loop
245
250
  # which let's the program exit itself. Calling shutdown again will force shutdown the program
246
251
  def shutdown
247
- if !PushmiPullyu.server_running?
248
- exit!(1)
249
- else
252
+ if PushmiPullyu.server_running?
250
253
  # using stderr instead of logger as it uses an underlying mutex which is not allowed inside trap contexts.
251
254
  warn 'Exiting... Interrupt again to force quit.'
252
255
  PushmiPullyu.server_running = false
256
+ else
257
+ exit!(1)
253
258
  end
254
259
  end
255
260
 
@@ -21,7 +21,7 @@ module PushmiPullyu::Logging
21
21
 
22
22
  attr_writer :logger
23
23
 
24
- def initialize_logger(log_target = STDOUT)
24
+ def initialize_logger(log_target = $stdout)
25
25
  @logger = Logger.new(log_target)
26
26
  @logger.level = Logger::INFO
27
27
  @logger
@@ -47,11 +47,11 @@ module PushmiPullyu::Logging
47
47
  preservation_logger = Logger.new("#{PushmiPullyu.options[:logdir]}/preservation_events.log")
48
48
 
49
49
  message = "#{deposited_file.name} was successfully deposited into Swift Storage!\n"\
50
- "Here are the details of this preservation event:\n"\
51
- "\tNOID: '#{deposited_file.name}'\n"\
52
- "\tTimestamp of Completion: '#{deposited_file.last_modified}'\n"\
53
- "\tAIP Checksum: '#{deposited_file.etag}'\n"\
54
- "\tMetadata: #{deposited_file.metadata}\n"\
50
+ "Here are the details of this preservation event:\n"\
51
+ "\tUUID: '#{deposited_file.name}'\n"\
52
+ "\tTimestamp of Completion: '#{deposited_file.last_modified}'\n"\
53
+ "\tAIP Checksum: '#{deposited_file.etag}'\n"\
54
+ "\tMetadata: #{deposited_file.metadata}\n"\
55
55
 
56
56
  file_details = file_log_details(aip_directory)
57
57
 
@@ -50,7 +50,7 @@ class PushmiPullyu::SwiftDepositer
50
50
  else
51
51
  # for creating new: construct hash with symbols as keys, add metadata as a hash within the header hash
52
52
  headers = { etag: checksum,
53
- content_type: 'application/x-tar',
53
+ content_type: 'application/x-tar',
54
54
  metadata: metadata }
55
55
  deposited_file = era_container.create_object(file_base_name, headers, File.open(file_name))
56
56
  end
@@ -1,3 +1,3 @@
1
1
  module PushmiPullyu
2
- VERSION = '1.0.5'.freeze
2
+ VERSION = '2.0.2'.freeze
3
3
  end
data/lib/pushmi_pullyu.rb CHANGED
@@ -1,22 +1,15 @@
1
- # require 'pushmi_pullyu/version' must be first as it declares the PushmiPullyu module.
2
- # (This fixes a weird NameError bug when using the nested compact syntax for
3
- # defining modules/classes like `module PushmiPullyu::Logging`)
4
- require 'pushmi_pullyu/version'
1
+ # require 'pushmi_pullyu/version' must be first as it declares the PushmiPullyu
2
+ # module. (This fixes a weird NameError bug when using the nested compact syntax
3
+ # for defining modules/classes like `module PushmiPullyu::Logging`)
5
4
 
5
+ require 'pushmi_pullyu/version'
6
6
  require 'pushmi_pullyu/logging'
7
-
8
7
  require 'pushmi_pullyu/aip'
9
8
  require 'pushmi_pullyu/aip/creator'
10
9
  require 'pushmi_pullyu/aip/downloader'
11
- require 'pushmi_pullyu/aip/fedora_fetcher'
12
- require 'pushmi_pullyu/aip/file_list_creator'
13
- require 'pushmi_pullyu/aip/owner_email_editor'
14
- require 'active_record'
15
- require 'pushmi_pullyu/aip/user'
16
10
  require 'pushmi_pullyu/cli'
17
11
  require 'pushmi_pullyu/preservation_queue'
18
12
  require 'pushmi_pullyu/swift_depositer'
19
-
20
13
  require 'active_support'
21
14
  require 'active_support/core_ext'
22
15
 
@@ -36,12 +29,6 @@ module PushmiPullyu
36
29
  redis: {
37
30
  url: 'redis://localhost:6379'
38
31
  },
39
- fedora: {
40
- url: 'http://localhost:8080/fcrepo/rest',
41
- user: 'fedoraAdmin',
42
- password: 'fedoraAdmin',
43
- base_path: '/dev'
44
- },
45
32
  swift: {
46
33
  tenant: 'tester',
47
34
  username: 'test:tester',
@@ -58,6 +45,12 @@ module PushmiPullyu
58
45
  pool: ENV['RAILS_MAX_THREADS'] || 5,
59
46
  url: ENV['DATABASE_URL'] || ENV['JUPITER_DATABASE_URL'] || 'postgresql://jupiter:mysecretpassword@127.0.0.1',
60
47
  database: 'jupiter_development'
48
+ },
49
+ jupiter: {
50
+ user: ENV['JUPITER_USER'],
51
+ api_key: ENV['JUPITER_API_KEY'],
52
+ jupiter_url: ENV['JUPITER_URL'] || 'http://localhost:3000/',
53
+ aip_api_path: ENV['JUPITER_AIP_API_PATH'] || 'aip/v1'
61
54
  }
62
55
  }.freeze
63
56
 
@@ -5,10 +5,10 @@ require 'pushmi_pullyu/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'pushmi_pullyu'
7
7
  spec.version = PushmiPullyu::VERSION
8
- spec.authors = ['Shane Murnaghan']
9
- spec.email = ['murnagha@ualberta.ca']
8
+ spec.authors = ['Shane Murnaghan', 'Omar Rodriguez-Arenas']
9
+ spec.email = ['murnagha@ualberta.ca', 'orodrigu@ualberta.ca']
10
10
 
11
- spec.summary = 'Ruby application to manage flow of content from Fedora into Swift for preservation'
11
+ spec.summary = 'Ruby application to manage flow of content from Jupiter into Swift for preservation'
12
12
  spec.homepage = 'https://github.com/ualbertalib/pushmi_pullyu'
13
13
  spec.license = 'MIT'
14
14
 
@@ -19,31 +19,35 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.required_ruby_version = '>= 2.3.1'
22
+ spec.required_ruby_version = '>= 2.5'
23
23
 
24
- spec.add_runtime_dependency 'activerecord', '>= 5.1.5', '< 5.3.0'
25
- spec.add_runtime_dependency 'activesupport', '~> 5.0'
24
+ spec.add_runtime_dependency 'activesupport', '>= 5', '< 7'
26
25
  spec.add_runtime_dependency 'bagit', '~> 0.4'
27
26
  spec.add_runtime_dependency 'connection_pool', '~> 2.2'
28
27
  spec.add_runtime_dependency 'daemons', '~> 1.2', '>= 1.2.4'
29
- spec.add_runtime_dependency 'minitar', '~> 0.6'
28
+ spec.add_runtime_dependency 'minitar', '~> 0.7'
30
29
  spec.add_runtime_dependency 'openstack', '~> 3.3', '>= 3.3.10'
31
30
  spec.add_runtime_dependency 'pg', '>= 1.0', '< 1.2'
32
31
  spec.add_runtime_dependency 'rdf', '>= 1.99', '< 4.0'
33
32
  spec.add_runtime_dependency 'rdf-n3', '>= 1.99', '< 4.0'
34
33
  spec.add_runtime_dependency 'redis', '>= 3.3', '< 5.0'
35
34
  spec.add_runtime_dependency 'rest-client', '>= 1.8', '< 3.0'
36
- spec.add_runtime_dependency 'rollbar', '~> 2.14'
35
+ spec.add_runtime_dependency 'rollbar', '>= 2.18', '< 4.0'
36
+ spec.add_runtime_dependency 'uuid', '~> 2.3.9'
37
37
 
38
- spec.add_development_dependency 'bundler', '~> 1.14'
38
+ spec.add_development_dependency 'bundler', '~> 2.0'
39
39
  spec.add_development_dependency 'coveralls', '~> 0.8'
40
- spec.add_development_dependency 'danger', '~> 5.2'
40
+ spec.add_development_dependency 'danger', '~> 8.0'
41
41
  spec.add_development_dependency 'pry', '~> 0.10', '>= 0.10.4'
42
- spec.add_development_dependency 'rake', '~> 12.0'
42
+ spec.add_development_dependency 'pry-byebug', '~> 3.6'
43
+ spec.add_development_dependency 'rake', '~> 13.0'
43
44
  spec.add_development_dependency 'rspec', '~> 3.0'
44
- spec.add_development_dependency 'rubocop', '~> 0.51'
45
- spec.add_development_dependency 'rubocop-rspec', '~> 1.10'
45
+ spec.add_development_dependency 'rubocop', '~> 1.23'
46
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.6'
46
47
  spec.add_development_dependency 'timecop', '~> 0.8'
47
- spec.add_development_dependency 'vcr', '~> 4.0'
48
+ spec.add_development_dependency 'vcr', '~> 5.0'
48
49
  spec.add_development_dependency 'webmock', '~> 3.3'
50
+ spec.metadata = {
51
+ 'rubygems_mfa_required' => 'true'
52
+ }
49
53
  end
metadata CHANGED
@@ -1,49 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushmi_pullyu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Murnaghan
8
+ - Omar Rodriguez-Arenas
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2018-09-18 00:00:00.000000000 Z
12
+ date: 2021-11-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: activerecord
15
+ name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: 5.1.5
20
+ version: '5'
20
21
  - - "<"
21
22
  - !ruby/object:Gem::Version
22
- version: 5.3.0
23
+ version: '7'
23
24
  type: :runtime
24
25
  prerelease: false
25
26
  version_requirements: !ruby/object:Gem::Requirement
26
27
  requirements:
27
28
  - - ">="
28
29
  - !ruby/object:Gem::Version
29
- version: 5.1.5
30
+ version: '5'
30
31
  - - "<"
31
32
  - !ruby/object:Gem::Version
32
- version: 5.3.0
33
- - !ruby/object:Gem::Dependency
34
- name: activesupport
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '5.0'
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '5.0'
33
+ version: '7'
47
34
  - !ruby/object:Gem::Dependency
48
35
  name: bagit
49
36
  requirement: !ruby/object:Gem::Requirement
@@ -98,14 +85,14 @@ dependencies:
98
85
  requirements:
99
86
  - - "~>"
100
87
  - !ruby/object:Gem::Version
101
- version: '0.6'
88
+ version: '0.7'
102
89
  type: :runtime
103
90
  prerelease: false
104
91
  version_requirements: !ruby/object:Gem::Requirement
105
92
  requirements:
106
93
  - - "~>"
107
94
  - !ruby/object:Gem::Version
108
- version: '0.6'
95
+ version: '0.7'
109
96
  - !ruby/object:Gem::Dependency
110
97
  name: openstack
111
98
  requirement: !ruby/object:Gem::Requirement
@@ -228,32 +215,52 @@ dependencies:
228
215
  version: '3.0'
229
216
  - !ruby/object:Gem::Dependency
230
217
  name: rollbar
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '2.18'
223
+ - - "<"
224
+ - !ruby/object:Gem::Version
225
+ version: '4.0'
226
+ type: :runtime
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '2.18'
233
+ - - "<"
234
+ - !ruby/object:Gem::Version
235
+ version: '4.0'
236
+ - !ruby/object:Gem::Dependency
237
+ name: uuid
231
238
  requirement: !ruby/object:Gem::Requirement
232
239
  requirements:
233
240
  - - "~>"
234
241
  - !ruby/object:Gem::Version
235
- version: '2.14'
242
+ version: 2.3.9
236
243
  type: :runtime
237
244
  prerelease: false
238
245
  version_requirements: !ruby/object:Gem::Requirement
239
246
  requirements:
240
247
  - - "~>"
241
248
  - !ruby/object:Gem::Version
242
- version: '2.14'
249
+ version: 2.3.9
243
250
  - !ruby/object:Gem::Dependency
244
251
  name: bundler
245
252
  requirement: !ruby/object:Gem::Requirement
246
253
  requirements:
247
254
  - - "~>"
248
255
  - !ruby/object:Gem::Version
249
- version: '1.14'
256
+ version: '2.0'
250
257
  type: :development
251
258
  prerelease: false
252
259
  version_requirements: !ruby/object:Gem::Requirement
253
260
  requirements:
254
261
  - - "~>"
255
262
  - !ruby/object:Gem::Version
256
- version: '1.14'
263
+ version: '2.0'
257
264
  - !ruby/object:Gem::Dependency
258
265
  name: coveralls
259
266
  requirement: !ruby/object:Gem::Requirement
@@ -274,14 +281,14 @@ dependencies:
274
281
  requirements:
275
282
  - - "~>"
276
283
  - !ruby/object:Gem::Version
277
- version: '5.2'
284
+ version: '8.0'
278
285
  type: :development
279
286
  prerelease: false
280
287
  version_requirements: !ruby/object:Gem::Requirement
281
288
  requirements:
282
289
  - - "~>"
283
290
  - !ruby/object:Gem::Version
284
- version: '5.2'
291
+ version: '8.0'
285
292
  - !ruby/object:Gem::Dependency
286
293
  name: pry
287
294
  requirement: !ruby/object:Gem::Requirement
@@ -302,20 +309,34 @@ dependencies:
302
309
  - - ">="
303
310
  - !ruby/object:Gem::Version
304
311
  version: 0.10.4
312
+ - !ruby/object:Gem::Dependency
313
+ name: pry-byebug
314
+ requirement: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - "~>"
317
+ - !ruby/object:Gem::Version
318
+ version: '3.6'
319
+ type: :development
320
+ prerelease: false
321
+ version_requirements: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - "~>"
324
+ - !ruby/object:Gem::Version
325
+ version: '3.6'
305
326
  - !ruby/object:Gem::Dependency
306
327
  name: rake
307
328
  requirement: !ruby/object:Gem::Requirement
308
329
  requirements:
309
330
  - - "~>"
310
331
  - !ruby/object:Gem::Version
311
- version: '12.0'
332
+ version: '13.0'
312
333
  type: :development
313
334
  prerelease: false
314
335
  version_requirements: !ruby/object:Gem::Requirement
315
336
  requirements:
316
337
  - - "~>"
317
338
  - !ruby/object:Gem::Version
318
- version: '12.0'
339
+ version: '13.0'
319
340
  - !ruby/object:Gem::Dependency
320
341
  name: rspec
321
342
  requirement: !ruby/object:Gem::Requirement
@@ -336,28 +357,28 @@ dependencies:
336
357
  requirements:
337
358
  - - "~>"
338
359
  - !ruby/object:Gem::Version
339
- version: '0.51'
360
+ version: '1.23'
340
361
  type: :development
341
362
  prerelease: false
342
363
  version_requirements: !ruby/object:Gem::Requirement
343
364
  requirements:
344
365
  - - "~>"
345
366
  - !ruby/object:Gem::Version
346
- version: '0.51'
367
+ version: '1.23'
347
368
  - !ruby/object:Gem::Dependency
348
369
  name: rubocop-rspec
349
370
  requirement: !ruby/object:Gem::Requirement
350
371
  requirements:
351
372
  - - "~>"
352
373
  - !ruby/object:Gem::Version
353
- version: '1.10'
374
+ version: '2.6'
354
375
  type: :development
355
376
  prerelease: false
356
377
  version_requirements: !ruby/object:Gem::Requirement
357
378
  requirements:
358
379
  - - "~>"
359
380
  - !ruby/object:Gem::Version
360
- version: '1.10'
381
+ version: '2.6'
361
382
  - !ruby/object:Gem::Dependency
362
383
  name: timecop
363
384
  requirement: !ruby/object:Gem::Requirement
@@ -378,14 +399,14 @@ dependencies:
378
399
  requirements:
379
400
  - - "~>"
380
401
  - !ruby/object:Gem::Version
381
- version: '4.0'
402
+ version: '5.0'
382
403
  type: :development
383
404
  prerelease: false
384
405
  version_requirements: !ruby/object:Gem::Requirement
385
406
  requirements:
386
407
  - - "~>"
387
408
  - !ruby/object:Gem::Version
388
- version: '4.0'
409
+ version: '5.0'
389
410
  - !ruby/object:Gem::Dependency
390
411
  name: webmock
391
412
  requirement: !ruby/object:Gem::Requirement
@@ -403,6 +424,7 @@ dependencies:
403
424
  description:
404
425
  email:
405
426
  - murnagha@ualberta.ca
427
+ - orodrigu@ualberta.ca
406
428
  executables:
407
429
  - pushmi_pullyu
408
430
  extensions: []
@@ -410,11 +432,15 @@ extra_rdoc_files: []
410
432
  files:
411
433
  - ".coveralls.yml"
412
434
  - ".editorconfig"
435
+ - ".github/CODEOWNERS"
436
+ - ".github/PULL_REQUEST_TEMPLATE"
437
+ - ".github/dependabot.yml"
438
+ - ".github/workflows/ruby.yml"
413
439
  - ".gitignore"
414
440
  - ".hound.yml"
415
441
  - ".rspec"
416
442
  - ".rubocop.yml"
417
- - ".travis.yml"
443
+ - CHANGELOG.md
418
444
  - Dangerfile
419
445
  - Gemfile
420
446
  - LICENSE.txt
@@ -431,10 +457,6 @@ files:
431
457
  - lib/pushmi_pullyu/aip.rb
432
458
  - lib/pushmi_pullyu/aip/creator.rb
433
459
  - lib/pushmi_pullyu/aip/downloader.rb
434
- - lib/pushmi_pullyu/aip/fedora_fetcher.rb
435
- - lib/pushmi_pullyu/aip/file_list_creator.rb
436
- - lib/pushmi_pullyu/aip/owner_email_editor.rb
437
- - lib/pushmi_pullyu/aip/user.rb
438
460
  - lib/pushmi_pullyu/cli.rb
439
461
  - lib/pushmi_pullyu/logging.rb
440
462
  - lib/pushmi_pullyu/preservation_queue.rb
@@ -447,7 +469,8 @@ files:
447
469
  homepage: https://github.com/ualbertalib/pushmi_pullyu
448
470
  licenses:
449
471
  - MIT
450
- metadata: {}
472
+ metadata:
473
+ rubygems_mfa_required: 'true'
451
474
  post_install_message:
452
475
  rdoc_options: []
453
476
  require_paths:
@@ -456,16 +479,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
456
479
  requirements:
457
480
  - - ">="
458
481
  - !ruby/object:Gem::Version
459
- version: 2.3.1
482
+ version: '2.5'
460
483
  required_rubygems_version: !ruby/object:Gem::Requirement
461
484
  requirements:
462
485
  - - ">="
463
486
  - !ruby/object:Gem::Version
464
487
  version: '0'
465
488
  requirements: []
466
- rubyforge_project:
467
- rubygems_version: 2.6.11
489
+ rubygems_version: 3.1.6
468
490
  signing_key:
469
491
  specification_version: 4
470
- summary: Ruby application to manage flow of content from Fedora into Swift for preservation
492
+ summary: Ruby application to manage flow of content from Jupiter into Swift for preservation
471
493
  test_files: []
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- cache: bundler
4
- services:
5
- - redis-server
6
-
7
- before_install:
8
- - gem install bundler
9
- - gem update bundler
10
-
11
- rvm:
12
- - 2.3.3
13
- - 2.4.0
14
-
15
- before_script:
16
- - bundle exec danger
@@ -1,66 +0,0 @@
1
- require 'net/http'
2
-
3
- class PushmiPullyu::AIP::FedoraFetcher
4
-
5
- class FedoraFetchError < StandardError; end
6
-
7
- RDF_FORMAT = 'text/rdf+n3'.freeze
8
-
9
- def initialize(noid)
10
- @noid = noid
11
- end
12
-
13
- def object_url(url_extra = nil)
14
- url = "#{PushmiPullyu.options[:fedora][:url]}#{base_path}/#{pairtree}"
15
- url += url_extra if url_extra
16
- url
17
- end
18
-
19
- # Return true on success, raise an error otherwise
20
- # (or use 'optional' to return false on 404)
21
- def download_object(download_path, url_extra: nil,
22
- optional: false, is_rdf: false,
23
- should_add_user_email: false)
24
-
25
- uri = URI(object_url(url_extra))
26
-
27
- request = Net::HTTP::Get.new(uri)
28
- request.basic_auth(PushmiPullyu.options[:fedora][:user],
29
- PushmiPullyu.options[:fedora][:password])
30
-
31
- request['Accept'] = RDF_FORMAT if is_rdf
32
-
33
- response = Net::HTTP.start(uri.hostname, uri.port) do |http|
34
- http.request(request)
35
- end
36
-
37
- if response.is_a?(Net::HTTPSuccess)
38
- body = if should_add_user_email
39
- PushmiPullyu::AIP::OwnerEmailEditor.new(response.body).run
40
- else
41
- response.body
42
- end
43
- file = File.open(download_path, 'wb')
44
- file.write(body)
45
- file.close
46
- return true
47
- elsif response.is_a?(Net::HTTPNotFound)
48
- raise FedoraFetchError unless optional
49
-
50
- return false
51
- else
52
- raise FedoraFetchError
53
- end
54
- end
55
-
56
- private
57
-
58
- def pairtree
59
- "#{@noid[0..1]}/#{@noid[2..3]}/#{@noid[4..5]}/#{@noid[6..7]}/#{@noid}"
60
- end
61
-
62
- def base_path
63
- PushmiPullyu.options[:fedora][:base_path]
64
- end
65
-
66
- end