Class: Hyrax::FileSetFixityCheckService
- Inherits:
-
Object
- Object
- Hyrax::FileSetFixityCheckService
- Defined in:
- app/services/hyrax/file_set_fixity_check_service.rb
Overview
This class runs fixity checks on a FileSetBehavior, potentially on multiple files each with multiple versions in the FileSet
.
The fixity check itself is performed by FixityCheckJob, which just uses the fedora service to ask for fixity verification. The outcome will be some created ChecksumAuditLog (ActiveRecord) objects, recording the checks and their results.
By default this runs the checks async using ActiveJob
, so returns no useful info – the checks are still going Use ChecksumAuditLog.latest_for_file_set_id to retrieve the latest machine-readable checks.
But if you initialize with async_jobs: false, checks will be done blocking in foreground, and you can get back the ChecksumAuditLog records created.
It will only run fixity checks if there are not recent ChecksumAuditLogs on record. “recent” is defined by max_days_between_fixity_checks
arg, which defaults to configured Configuration#max_days_between_fixity_checks
Instance Attribute Summary collapse
-
#async_jobs ⇒ Object
readonly
Returns the value of attribute async_jobs.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#latest_version_only ⇒ Object
readonly
Returns the value of attribute latest_version_only.
-
#max_days_between_fixity_checks ⇒ Object
readonly
Returns the value of attribute max_days_between_fixity_checks.
Instance Method Summary collapse
-
#fixity_check ⇒ Object
Fixity checks each version of each file if it hasn’t been checked recently If object async_jobs is false, will returns the set of most recent fixity check status for each version of the content file(s).
-
#initialize(file_set, async_jobs: true, max_days_between_fixity_checks: Hyrax.config.max_days_between_fixity_checks, latest_version_only: false) ⇒ FileSetFixityCheckService
constructor
A new instance of FileSetFixityCheckService.
Constructor Details
#initialize(file_set, async_jobs: true, max_days_between_fixity_checks: Hyrax.config.max_days_between_fixity_checks, latest_version_only: false) ⇒ FileSetFixityCheckService
Returns a new instance of FileSetFixityCheckService.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/services/hyrax/file_set_fixity_check_service.rb', line 37 def initialize(file_set, async_jobs: true, max_days_between_fixity_checks: Hyrax.config.max_days_between_fixity_checks, latest_version_only: false) @max_days_between_fixity_checks = max_days_between_fixity_checks || 0 @async_jobs = async_jobs @latest_version_only = latest_version_only if file_set.is_a?(String) @id = file_set else @id = file_set.id @file_set = file_set end end |
Instance Attribute Details
#async_jobs ⇒ Object (readonly)
Returns the value of attribute async_jobs.
26 27 28 |
# File 'app/services/hyrax/file_set_fixity_check_service.rb', line 26 def async_jobs @async_jobs end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
26 27 28 |
# File 'app/services/hyrax/file_set_fixity_check_service.rb', line 26 def id @id end |
#latest_version_only ⇒ Object (readonly)
Returns the value of attribute latest_version_only.
26 27 28 |
# File 'app/services/hyrax/file_set_fixity_check_service.rb', line 26 def latest_version_only @latest_version_only end |
#max_days_between_fixity_checks ⇒ Object (readonly)
Returns the value of attribute max_days_between_fixity_checks.
26 27 28 |
# File 'app/services/hyrax/file_set_fixity_check_service.rb', line 26 def max_days_between_fixity_checks @max_days_between_fixity_checks end |
Instance Method Details
#fixity_check ⇒ Object
Fixity checks each version of each file if it hasn’t been checked recently If object async_jobs is false, will returns the set of most recent fixity check status for each version of the content file(s). As a hash keyed by file_id, values arrays of possibly multiple version checks.
If async_jobs is true (default), just returns nil, stuff is still going on.
58 59 60 61 62 63 64 |
# File 'app/services/hyrax/file_set_fixity_check_service.rb', line 58 def fixity_check results = file_set.files.collect { |f| fixity_check_file(f) } return if async_jobs results.flatten.group_by(&:file_id) end |