valkyrie-shrine 0.3.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aef24fabeacf6da3dce1036b01bbc5738921e79f205b38c067d67d5d62d623f4
4
- data.tar.gz: 53e0b0ffd66e766c808c0a5ce1be1ba340f4fe4404806f4f0c0c909eb62d5fd1
3
+ metadata.gz: a7a482b7fc9181f9af0f7a9b9f4fa4d7cc131c9b30489414799b7a0cc16d2c26
4
+ data.tar.gz: f20feb6e99e26a0c7e4af2bd39b19f2ad5a90d369b142d699abedbaa23829d64
5
5
  SHA512:
6
- metadata.gz: 4573d6b6f1ba7e0e6bdd4dc03df7cf442f9c73e727498bd36c064d8ad75df56fe4d13fa9f159cd3dfa52150bf2eefc6f3a903afbd32acc9d47d9141152360b9f
7
- data.tar.gz: f6e541e72d6b15fda6fb9611a7422eede93d33054450662954b0c5bbab970df03154038a954b6f54f5821421ab2fea84ea8dbf86b591ecf4b99a3dbe829f6740
6
+ metadata.gz: 547028b04de7538b83d9bb1685e3424722691be427c40a3c33545b646c5df99cb1ff01ea7b899c175bb330c0163c4359c5d437e6bda81063ae17e4efcbf03273
7
+ data.tar.gz: 824399812e4df139b35c13c0d45c0adcf35d5c41528ebd235b8d95ecd8d07d7a0b4ae0bb409bec0d7cefdc288dfae8522c1e6c79a39f36842b2ea6e7e6074623
data/circle.yml CHANGED
@@ -2,7 +2,7 @@ version: 2
2
2
  jobs:
3
3
  build:
4
4
  docker:
5
- - image: circleci/ruby:2.6.1
5
+ - image: cimg/ruby:2.6.1
6
6
  environment:
7
7
  BUNDLER_VERSION: 2.0.1
8
8
  steps:
@@ -26,4 +26,4 @@ jobs:
26
26
  command: bundle exec rubocop
27
27
  - run:
28
28
  name: Run Specs
29
- command: bundle exec rspec spec
29
+ command: bundle exec rspec spec
@@ -16,7 +16,8 @@ module Valkyrie
16
16
  end
17
17
 
18
18
  def calculate_checksum(result)
19
- result.io.data[:object].data.etag.delete('"')
19
+ result.io.data[:object]&.data&.etag&.delete('"') ||
20
+ checksum_for(result.io)
20
21
  end
21
22
 
22
23
  def checksum_for(io)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Valkyrie
4
4
  module Shrine
5
- VERSION = "0.3.0"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'shrine'
4
4
  require 'digest/md5'
5
+ require 'securerandom'
5
6
 
6
7
  module Valkyrie
7
8
  module Storage
@@ -11,12 +12,41 @@ module Valkyrie
11
12
  attr_reader :shrine, :verifier, :path_generator, :identifier_prefix
12
13
 
13
14
  class IDPathGenerator
14
- def initialize(base_path: nil)
15
- @base_path = base_path
16
- end
15
+ def initialize(base_path: nil); end
17
16
 
17
+ # @return [String]
18
18
  def generate(resource:, file:, original_filename:)
19
- resource.id.to_s
19
+ # Because Valkyrie has to maintain compatibility with ActiveFedora via
20
+ # the wings adapter, the file passed to #upload has to be saved before
21
+ # its associated FileMetadata; this means that the resource provided
22
+ # here is the parent FileSet rather than the FileMetadata object. As
23
+ # a result, when we upload derivatives (like thumbnails) we have to
24
+ # pass the same resource as for the original file. If we relied on
25
+ # the resource.id to generate the ID for the StreamFile here, that
26
+ # would result in derivative uploads overwriting their originals.
27
+ # Thus we use a UUID, prefixed by the resource ID.
28
+ "#{resource.id}/#{SecureRandom.uuid}"
29
+ end
30
+ end
31
+
32
+ class DelayedDownload
33
+ attr_reader :shrine, :id
34
+ def initialize(shrine, id)
35
+ @shrine = shrine
36
+ @id = id
37
+ end
38
+
39
+ def file
40
+ @file ||= shrine.open(id)
41
+ end
42
+
43
+ def method_missing(meth_name, *args, &block)
44
+ return super unless file.respond_to?(meth_name)
45
+ file.send(meth_name, *args, &block)
46
+ end
47
+
48
+ def respond_to_missing?(meth_name, include_private = false)
49
+ file.respond_to?(meth_name) || super
20
50
  end
21
51
  end
22
52
 
@@ -57,7 +87,7 @@ module Valkyrie
57
87
  # @raise Valkyrie::StorageAdapter::FileNotFound if nothing is found
58
88
  def find_by(id:)
59
89
  raise Valkyrie::StorageAdapter::FileNotFound unless shrine.exists?(shrine_id_for(id))
60
- Valkyrie::StorageAdapter::StreamFile.new(id: Valkyrie::ID.new(id.to_s), io: shrine.open(shrine_id_for(id)))
90
+ Valkyrie::StorageAdapter::StreamFile.new(id: Valkyrie::ID.new(id.to_s), io: DelayedDownload.new(shrine, shrine_id_for(id)))
61
91
  rescue Aws::S3::Errors::NoSuchKey
62
92
  raise Valkyrie::StorageAdapter::FileNotFound
63
93
  end
@@ -24,15 +24,15 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ['lib']
25
25
 
26
26
  spec.add_dependency 'aws-sdk-s3', '~> 1'
27
- spec.add_dependency 'shrine', '~> 2.0'
27
+ spec.add_dependency 'shrine', '>= 2.0', '< 4.0'
28
28
  spec.add_dependency 'valkyrie', '> 1.0'
29
29
 
30
30
  spec.add_development_dependency 'bixby', '~> 2.0.0.pre.beta1'
31
31
  spec.add_development_dependency 'bundler', '~> 2.0'
32
- spec.add_development_dependency 'coveralls'
32
+ spec.add_development_dependency 'coveralls', '~> 0.8.3'
33
33
  spec.add_development_dependency 'pry'
34
34
  spec.add_development_dependency 'pry-byebug'
35
- spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'rake', '>= 12.3.3'
36
36
  spec.add_development_dependency 'rspec', '~> 3.0'
37
37
  spec.add_development_dependency 'simplecov'
38
38
  spec.add_development_dependency 'actionpack'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valkyrie-shrine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brendan Quinn
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2022-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-s3
@@ -28,16 +28,22 @@ dependencies:
28
28
  name: shrine
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '4.0'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '2.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '4.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: valkyrie
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +90,16 @@ dependencies:
84
90
  name: coveralls
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ">="
93
+ - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '0'
95
+ version: 0.8.3
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ">="
100
+ - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '0'
102
+ version: 0.8.3
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: pry
99
105
  requirement: !ruby/object:Gem::Requirement
@@ -126,16 +132,16 @@ dependencies:
126
132
  name: rake
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
- - - "~>"
135
+ - - ">="
130
136
  - !ruby/object:Gem::Version
131
- version: '10.0'
137
+ version: 12.3.3
132
138
  type: :development
133
139
  prerelease: false
134
140
  version_requirements: !ruby/object:Gem::Requirement
135
141
  requirements:
136
- - - "~>"
142
+ - - ">="
137
143
  - !ruby/object:Gem::Version
138
- version: '10.0'
144
+ version: 12.3.3
139
145
  - !ruby/object:Gem::Dependency
140
146
  name: rspec
141
147
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +184,7 @@ dependencies:
178
184
  - - ">="
179
185
  - !ruby/object:Gem::Version
180
186
  version: '0'
181
- description:
187
+ description:
182
188
  email:
183
189
  - brendan-quinn@northwestern.edu
184
190
  executables: []
@@ -207,7 +213,7 @@ homepage: https://github.com/samvera-labs/valkyrie-shrine
207
213
  licenses:
208
214
  - Apache-2.0
209
215
  metadata: {}
210
- post_install_message:
216
+ post_install_message:
211
217
  rdoc_options: []
212
218
  require_paths:
213
219
  - lib
@@ -222,8 +228,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
228
  - !ruby/object:Gem::Version
223
229
  version: '0'
224
230
  requirements: []
225
- rubygems_version: 3.0.1
226
- signing_key:
231
+ rubygems_version: 3.1.4
232
+ signing_key:
227
233
  specification_version: 4
228
234
  summary: Shrine storage adapter for Valkyrie
229
235
  test_files: []