pushmi_pullyu 1.0.5 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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