valkyrie-shrine 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []