Skip to content

Commit

Permalink
[ESSI-2062] unify #versioned_lookup_id, #basic_lookup_id split
Browse files Browse the repository at this point in the history
  • Loading branch information
aploshay committed Jan 31, 2025
1 parent 4bbeedd commit bcbc848
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 24 deletions.
2 changes: 1 addition & 1 deletion app/presenters/hyrax/displays_image.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def display_image

private
def iiif_path_service
@iiif_path_service ||= IIIFFileSetPathService.new(solr_document, versioned_lookup: true)
@iiif_path_service ||= IIIFFileSetPathService.new(solr_document)
end

def iiif_endpoint
Expand Down
37 changes: 16 additions & 21 deletions app/services/iiif_file_set_path_service.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
class IIIFFileSetPathService
attr_reader :file_set, :versioned_lookup
attr_reader :file_set

# @param [ActiveFedora::SolrHit, FileSet, Hash, SolrDocument, Hyrax::FileSetPresenter] file_set
# @param [TrueClass, FalseClass, NilClass] versioned_lookup: whether to use versioned file lookup if original_file_id fails
def initialize(file_set, versioned_lookup: false)
@versioned_lookup = versioned_lookup
def initialize(file_set)
file_set = SolrDocument.new(file_set) if file_set.class.in? [ActiveFedora::SolrHit, Hash]
if [:id, :content_location, :original_file_id].map { |m| file_set.respond_to?(m) }.all?
@file_set = file_set
Expand All @@ -14,7 +12,7 @@ def initialize(file_set, versioned_lookup: false)
end

def lookup_id
@lookup_id ||= (@versioned_lookup ? versioned_lookup_id : basic_lookup_id)
@lookup_id ||= versioned_lookup_id
end

# @return [String] a URL that resolves to an image provided by a IIIF image server
Expand All @@ -30,32 +28,29 @@ def iiif_info_url(base_url)
end

private
# imported logic from IIIFThumbnailPathService, etc
def basic_lookup_id
@basic_lookup_id ||= (file_set.content_location || file_set.original_file_id)
end

# imported from Hyrax::DisplaysImage
def versioned_lookup_id
@versioned_lookup_id ||= begin
result = basic_lookup_id
if result.blank?
Rails.logger.warn "original_file_id for #{file_set.id} not found, falling back to Fedora."
# result = Hyrax::VersioningService.versioned_file_id(original_file)
result = versioned_file_id(original_file)
end
result
result = file_set.content_location || file_set.original_file_id
if result.blank?
Rails.logger.warn "original_file_id for #{file_set.id} not found, falling back to Fedora."
# result = Hyrax::VersioningService.versioned_file_id(original_file)
result = versioned_file_id(original_file) if original_file
end
Rails.logger.warn "original_file for #{file_set.id} not found, versioned_lookup_id failed."
result
end

# @return Hydra::PCDM::File
# @return [Hydra::PCDM::File, nil]
def original_file
@original_file ||=
case file_set
when FileSet
file_set.original_file
else
FileSet.find(file_set.id).original_file
begin
FileSet.find(file_set.id).original_file
rescue
nil
end
end
end

Expand Down
3 changes: 1 addition & 2 deletions spec/services/iiif_file_set_path_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@
let(:solr_document) { SolrDocument.new(solr_hit) }
# must explicitly define :source if using file_set_presenter
let(:file_set_presenter) { Hyrax::FileSetPresenter.new(source, Ability.new(FactoryBot.build(:user))) }
let(:versioned_lookup) { false } # default, override when desired
# must explicitly define :resource
let(:service) { described_class.new(resource, versioned_lookup: versioned_lookup) }
let(:service) { described_class.new(resource) }

# requires defining lookup_id, url
shared_examples "url examples" do
Expand Down

0 comments on commit bcbc848

Please sign in to comment.