Skip to content

Commit 467ba2c

Browse files
committed
If a versioned file is available, send that path to cantaloupe
1 parent d31ea96 commit 467ba2c

File tree

10 files changed

+30
-30
lines changed

10 files changed

+30
-30
lines changed

app/models/iiif_image.rb

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,13 @@ def response
3030
private
3131

3232
def image_uri
33-
@image_uri ||= IIIF::Image::URI.new(base_uri: @base_uri, identifier: remote_id, transformation:)
33+
@image_uri ||= IIIF::Image::URI.new(base_uri: @base_uri, identifier: stacks_file.cantaloupe_identifier, transformation:)
3434
end
3535

3636
def image_url
3737
image_uri.to_s
3838
end
3939

40-
def remote_id
41-
CGI.escape(stacks_file.treeified_path)
42-
end
43-
4440
attr_reader :transformation, :stacks_file
4541

4642
delegate :logger, to: Rails

app/models/stacks_file.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ def path
4444
end
4545

4646
# Used as the IIIF identifier for retrieving this file from the image server
47-
def treeified_path
48-
storage_root.relative_path
47+
# return the content addressable path if available, otherwise the legacy path
48+
def cantaloupe_identifier
49+
CGI.escape(storage_root.relative_path)
4950
end
5051

5152
def storage_root

app/models/storage_root.rb

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,27 @@ def initialize(treeified_id:, file_name:, cocina:)
4343

4444
# As this is used for external service URLs (Canteloupe image server), we don't want to put content addressable path here.'
4545
def relative_path
46-
File.join(@treeified_id, @file_name)
46+
return relative_content_addressable_path if File.exist?(content_addressable_path)
47+
48+
File.join(@treeified_id, @file_name) # For legacy files
4749
end
4850

4951
def absolute_path
5052
return content_addressable_path if File.exist?(content_addressable_path)
5153

52-
File.join(Settings.stacks.storage_root, relative_path)
54+
File.join(Settings.stacks.storage_root, relative_path) # For legacy files
5355
end
5456

57+
private
58+
5559
def content_addressable_path
56-
@content_addressable_path ||= begin
57-
md5 = @cocina.find_file_md5(@file_name)
58-
File.join(Settings.stacks.storage_root, @treeified_id, @cocina.druid, 'content', md5)
59-
end
60+
@content_addressable_path ||= File.join(Settings.stacks.storage_root, relative_content_addressable_path)
61+
end
62+
63+
def relative_content_addressable_path
64+
md5 = @cocina.find_file_md5(@file_name)
65+
66+
File.join(@treeified_id, @cocina.druid, 'content', md5)
6067
end
6168
end
6269
end

app/services/iiif_metadata_service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class IiifMetadataService
88
# @param canonical_url [String]
99
# @param base_uri [String] base path to the IIIF server
1010
def initialize(stacks_file:, canonical_url:, base_uri: Settings.imageserver.base_uri)
11-
identifier = CGI.escape(stacks_file.treeified_path)
11+
identifier = stacks_file.cantaloupe_identifier
1212
@url = IIIF::Image::URI.new(identifier:, base_uri:).to_s
1313
@canonical_url = canonical_url
1414
end

spec/models/iiif_image_spec.rb

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,9 @@
77
let(:druid) { 'nr349ct7889' }
88
let(:file_name) { 'image.jp2' }
99
let(:transformation) { IIIF::Image::Transformation.new(size: 'full', region: 'full') }
10-
let(:stacks_file) { StacksFile.new(file_name:, cocina: Cocina.new({ "externalIdentifier" => druid })) }
10+
let(:stacks_file) { StacksFile.new(file_name:, cocina: Cocina.new(Factories.legacy_cocina_with_file)) }
1111
let(:instance) { described_class.new(stacks_file:, base_uri:, transformation:) }
1212

13-
describe "#remote_id" do
14-
subject { instance.send(:remote_id) }
15-
16-
it { is_expected.to eq(image_server_path(druid, file_name)) }
17-
end
18-
1913
describe "#valid?" do
2014
subject { instance.valid? }
2115

spec/models/projection_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
describe '#response' do
100100
let(:druid) { 'nr349ct7889' }
101101
let(:file_name) { 'image.jp2' }
102-
let(:cocina) { Cocina.new({ 'externalIdentifier' => druid }) }
102+
let(:cocina) { Cocina.new(Factories.legacy_cocina_with_file) }
103103

104104
context 'for an image' do
105105
let(:image) { StacksImage.new(stacks_file: StacksFile.new(file_name:, cocina:)) }

spec/models/stacks_image_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
describe "#info_service" do
1414
subject { instance.send(:info_service) }
15-
let(:stacks_file) { StacksFile.new(file_name: 'image.jp2', cocina: Cocina.new({ 'externalIdentifier' => 'nr349ct7889' })) }
15+
let(:stacks_file) { StacksFile.new(file_name: 'image.jp2', cocina: Cocina.new(Factories.legacy_cocina_with_file)) }
1616
let(:instance) { described_class.new(stacks_file:) }
1717

1818
it { is_expected.to be_a IiifMetadataService }

spec/requests/iiif_spec.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,11 @@
147147
end
148148

149149
describe 'image requests for world readable items' do
150+
let(:image_path_component) { "bb%2F000%2Fcr%2F7262%2Fbb000cr7262%2Fcontent%2F8ff299eda08d7c506273840d52a03bf3" }
151+
150152
context 'when the request is valid' do
151153
before do
152-
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_server_path('bb000cr7262', 'image.jp2')}/0,640,2552,2552/100,100/0/default.jpg")
154+
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_path_component}/0,640,2552,2552/100,100/0/default.jpg")
153155
.to_return(status: 200, body: "")
154156
end
155157

@@ -163,7 +165,7 @@
163165

164166
context 'when additional params are provided' do
165167
before do
166-
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_server_path('bb000cr7262', 'image.jp2')}/0,640,2552,2552/100,100/0/default.jpg")
168+
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_path_component}/0,640,2552,2552/100,100/0/default.jpg")
167169
.to_return(status: 200, body: "")
168170
end
169171

@@ -176,7 +178,7 @@
176178

177179
context 'when image is missing' do
178180
before do
179-
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_server_path('bb000cr7262', 'image.jp2')}/0,640,2552,2552/100,100/0/default.jpg")
181+
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_path_component}/0,640,2552,2552/100,100/0/default.jpg")
180182
.to_return(status: 404, body: "")
181183
end
182184

@@ -201,7 +203,7 @@
201203

202204
context 'with the download flag set' do
203205
before do
204-
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_server_path('bb000cr7262', 'image.jp2')}/0,640,2552,2552/100,100/0/default.jpg")
206+
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_path_component}/0,640,2552,2552/100,100/0/default.jpg")
205207
.to_return(status: 200, body: "")
206208
end
207209

@@ -215,7 +217,7 @@
215217

216218
context 'with a pct region' do
217219
before do
218-
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_server_path('bb000cr7262', 'image.jp2')}/pct:3.0,3.0,77.0,77.0/full/0/default.jpg")
220+
stub_request(:get, "http://imageserver-prod.stanford.edu/iiif/2/#{image_path_component}/pct:3.0,3.0,77.0,77.0/full/0/default.jpg")
219221
.to_return(status: 200, body: "")
220222
end
221223

spec/services/iiif_metadata_service_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
let(:base_uri) { 'https://sul-imageserver-uat.stanford.edu/cantaloupe/iiif/2/' } # 'image-server-path'
77
let(:druid) { 'nr349ct7889' }
88
let(:file_name) { 'image.jp2' }
9-
let(:stacks_file) { StacksFile.new(file_name:, cocina: Cocina.new({ 'externalIdentifier' => "druid:#{druid}" })) }
9+
let(:stacks_file) { StacksFile.new(file_name:, cocina: Cocina.new(Factories.legacy_cocina_with_file)) }
1010
let(:service) { described_class.new(stacks_file:, canonical_url: 'foo', base_uri:) }
1111
let(:http_client) { instance_double(HTTP::Client) }
1212

spec/support/image_server_path.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# reading from OCFL or not
66
module ImageServerPath
77
def image_server_path(druid, file_name)
8-
cocina = instance_double(Cocina, druid:)
8+
cocina = instance_double(Cocina, druid:, find_file_md5: '02f77c96c40ad3c7c843baa9c7b2ff2c')
99
CGI.escape(StorageRoot.new(cocina:, file_name:).relative_path)
1010
end
1111
end

0 commit comments

Comments
 (0)