From 73c38d02a095198bb1d2647cb521c9fefcc26d5c Mon Sep 17 00:00:00 2001 From: Benjamin Armintor Date: Tue, 19 Nov 2024 18:16:33 -0500 Subject: [PATCH] WIP --- app/controllers/concerns/iiif/authz/v2/bytestreams.rb | 1 + app/models/iiif/authz/v2/probe_service/response.rb | 7 +++++++ app/models/iiif/painting_annotation.rb | 3 +++ 3 files changed, 11 insertions(+) diff --git a/app/controllers/concerns/iiif/authz/v2/bytestreams.rb b/app/controllers/concerns/iiif/authz/v2/bytestreams.rb index f2829118..507ec0a8 100644 --- a/app/controllers/concerns/iiif/authz/v2/bytestreams.rb +++ b/app/controllers/concerns/iiif/authz/v2/bytestreams.rb @@ -41,6 +41,7 @@ def probe response.headers["Cache-Control"] = "no-cache, no-store" @response, @document = fetch(params[:catalog_id]) resource_doc = resources_for_document(@document, false).detect {|x| x[:id].split('/')[-1] == params[:bytestream_id]} + resource_doc = true if @document && (@document.fetch('dc_type_ssm',[]) & ['StillImage', 'Image']).present? if @document.nil? || resource_doc.nil? render status: :not_found, plain: "resource not found" return diff --git a/app/models/iiif/authz/v2/probe_service/response.rb b/app/models/iiif/authz/v2/probe_service/response.rb index 0035c72c..bffcdc9a 100644 --- a/app/models/iiif/authz/v2/probe_service/response.rb +++ b/app/models/iiif/authz/v2/probe_service/response.rb @@ -19,6 +19,13 @@ def redirect_location_properties(ability_helper=@ability_helper) format: 'application/vnd.apple.mpegurl' } end + if (@document.fetch('dc_type_ssm',[]) & ['StillImage', 'Image']).present? + return { + status: 302, + location: Dcv::Utils::CdnUtils.info_url(id: @document['fedora_pid_uri_ssi']&.split('/').last), + format: 'application/json+ld' + } + end preferred_bytestream_id = Dcv::Utils::UrlUtils.preferred_content_bytestream(@document) return { status: 302, location: route_helper.bytestream_content_url(catalog_id: @document.id, bytestream_id: preferred_bytestream_id) } end diff --git a/app/models/iiif/painting_annotation.rb b/app/models/iiif/painting_annotation.rb index 2c98d559..b20cd2d1 100644 --- a/app/models/iiif/painting_annotation.rb +++ b/app/models/iiif/painting_annotation.rb @@ -29,6 +29,9 @@ def annotation_body(routing_opts) body['format'] = 'image/jpeg' iiif_id = Dcv::Utils::CdnUtils.info_url(id: canvas.fedora_pid).sub(/\/info.json$/,'') body['service'].first['@id'] = iiif_id + unless ability_helper.can_access_asset?(canvas.solr_document, Ability.new) # public + body['service'].first['service'] = [Iiif::Authz::V2::ProbeService.new(canvas, route_helper: route_helper, ability_helper: ability_helper)] + end elsif body['type'] == Iiif::Type::V3::TEXT body.merge!(IIIF_TEMPLATES['text_annotation_body'].deep_dup) catalog_id = canvas.solr_document.id