bpl-derivatives 0.2.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 +7 -0
- data/.gitignore +15 -0
- data/.rspec +1 -0
- data/.travis.yml +7 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +21 -0
- data/README.md +60 -0
- data/Rakefile +7 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/bpl-derivatives.gemspec +50 -0
- data/lib/bpl/derivatives.rb +74 -0
- data/lib/bpl/derivatives/audio_encoder.rb +27 -0
- data/lib/bpl/derivatives/config.rb +64 -0
- data/lib/bpl/derivatives/datastream_decorator.rb +31 -0
- data/lib/bpl/derivatives/input_object_decorator.rb +11 -0
- data/lib/bpl/derivatives/io_decorator.rb +15 -0
- data/lib/bpl/derivatives/logger.rb +25 -0
- data/lib/bpl/derivatives/output_object_decorator.rb +12 -0
- data/lib/bpl/derivatives/processors.rb +18 -0
- data/lib/bpl/derivatives/processors/audio.rb +5 -0
- data/lib/bpl/derivatives/processors/document.rb +45 -0
- data/lib/bpl/derivatives/processors/ffmpeg.rb +21 -0
- data/lib/bpl/derivatives/processors/image.rb +76 -0
- data/lib/bpl/derivatives/processors/jpeg2k_image.rb +127 -0
- data/lib/bpl/derivatives/processors/processor.rb +43 -0
- data/lib/bpl/derivatives/processors/raw_image.rb +37 -0
- data/lib/bpl/derivatives/processors/shell_based_processor.rb +103 -0
- data/lib/bpl/derivatives/processors/video.rb +10 -0
- data/lib/bpl/derivatives/processors/video/config.rb +66 -0
- data/lib/bpl/derivatives/processors/video/processor.rb +41 -0
- data/lib/bpl/derivatives/runners/audio_derivatives.rb +7 -0
- data/lib/bpl/derivatives/runners/document_derivatives.rb +7 -0
- data/lib/bpl/derivatives/runners/image_derivatives.rb +15 -0
- data/lib/bpl/derivatives/runners/jpeg2k_image_derivatives.rb +15 -0
- data/lib/bpl/derivatives/runners/pdf_derivatives.rb +4 -0
- data/lib/bpl/derivatives/runners/runner.rb +59 -0
- data/lib/bpl/derivatives/runners/video_derivatives.rb +7 -0
- data/lib/bpl/derivatives/services/capability_service.rb +17 -0
- data/lib/bpl/derivatives/services/mime_type_service.rb +14 -0
- data/lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb +73 -0
- data/lib/bpl/derivatives/services/persist_datastream_output_service.rb +30 -0
- data/lib/bpl/derivatives/services/persist_file_system_output_service.rb +31 -0
- data/lib/bpl/derivatives/services/persist_output_file_service.rb +24 -0
- data/lib/bpl/derivatives/services/retrieve_source_file_from_datastream_service.rb +12 -0
- data/lib/bpl/derivatives/services/retrieve_source_file_service.rb +13 -0
- data/lib/bpl/derivatives/services/tempfile_service.rb +65 -0
- data/lib/bpl/derivatives/version.rb +5 -0
- data/lib/color_profiles/license.txt +7 -0
- data/lib/color_profiles/sRGB_IEC61966-2-1_no_black_scaling.icc +0 -0
- metadata +238 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
module BPL::Derivatives
|
2
|
+
class RetrieveSourceFileFromDatastreamService
|
3
|
+
# Retrieves the source
|
4
|
+
# @param [BPL::Derivatives::DatastreamDecorator] object the source file is attached to
|
5
|
+
# @param [Hash] options
|
6
|
+
# @option options [Symbol] :source a method that can be called on the object to retrieve the source file
|
7
|
+
# @yield [Tempfile] a temporary source file that has a lifetime of the block
|
8
|
+
def self.call(object, options, &block)
|
9
|
+
BPL::Derivatives::TempfileService.create(object, &block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module BPL::Derivatives
|
2
|
+
class RetrieveSourceFileService
|
3
|
+
# Retrieves the source
|
4
|
+
# @param [ArbitraryObject] object the source file is attached to
|
5
|
+
# @param [Hash] options
|
6
|
+
# @option options [Symbol] :source a method that can be called on the object to retrieve the source file
|
7
|
+
# @yield [Tempfile] a temporary source file that has a lifetime of the block
|
8
|
+
def self.call(object, options, &block)
|
9
|
+
source_name = options.fetch(:source)
|
10
|
+
BPL::Derivatives::TempfileService.create(object.send(source_name), &block)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'mime/types'
|
2
|
+
|
3
|
+
module BPL::Derivatives
|
4
|
+
class TempfileService
|
5
|
+
def self.create(object, &block)
|
6
|
+
new(object).tempfile(&block)
|
7
|
+
end
|
8
|
+
|
9
|
+
attr_reader :source_object, :source_file
|
10
|
+
|
11
|
+
def initialize(source_object)
|
12
|
+
@source_object = source_object
|
13
|
+
@source_file = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def source_file
|
17
|
+
if source_object.respond_to? :source_datastream
|
18
|
+
@source_file ||= source_object.source_datastream
|
19
|
+
else
|
20
|
+
@source_file ||= source_object
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def tempfile(&block)
|
25
|
+
if source_file.respond_to? :to_tempfile
|
26
|
+
source_file.send(:to_tempfile, &block)
|
27
|
+
elsif source_file.has_content?
|
28
|
+
default_tempfile(&block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def default_tempfile(&_block)
|
33
|
+
Tempfile.open(filename_for_characterization) do |f|
|
34
|
+
f.binmode
|
35
|
+
if source_file.content.respond_to? :read
|
36
|
+
f.write(source_file.content.read)
|
37
|
+
else
|
38
|
+
f.write(source_file.content)
|
39
|
+
end
|
40
|
+
source_file.content.rewind if source_file.content.respond_to? :rewind
|
41
|
+
f.rewind
|
42
|
+
yield(f)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
def filename_for_characterization
|
49
|
+
if source_file.respond_to? :filename_for_characterization
|
50
|
+
source_file.filename_for_characterization
|
51
|
+
else
|
52
|
+
default_filename_for_characterization
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def default_filename_for_characterization
|
57
|
+
registered_mime_type = MIME::Types[source_file.mime_type].first
|
58
|
+
BPL::Derivatives.base_logger.warn "Unable to find a registered mime type for #{source_file.mime_type.inspect} on #{source_object.uri}" unless registered_mime_type
|
59
|
+
extension = registered_mime_type ? ".#{registered_mime_type.extensions.first}" : ''
|
60
|
+
version_id = 1 # TODO: fixme
|
61
|
+
m = %r{/([^/]*)$}.match(source_object.uri)
|
62
|
+
["#{m[1]}-#{version_id}", extension.to_s]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
Terms of use (from http://www.color.org/srgbprofiles.xalter#v2)
|
2
|
+
|
3
|
+
To anyone who acknowledges that the files "sRGB_IEC61966-2-1_no_black_scaling.icc" and "sRGB_IEC61966-2-1_black scaled.icc"
|
4
|
+
are provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY, permission to use, copy and distribute these file for any purpose
|
5
|
+
is hereby granted without fee, provided that the files are not changed including the ICC copyright notice tag, and that the
|
6
|
+
name of ICC shall not be used in advertising or publicity pertaining to distribution of the software without specific,
|
7
|
+
written prior permission. ICC makes no representations about the suitability of this software for any purpose.
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,238 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bpl-derivatives
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Benjamin Barber
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '6'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '4.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '6'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: addressable
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.5'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.5'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mime-types
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.0'
|
54
|
+
- - "<"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '4.0'
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '2.0'
|
64
|
+
- - "<"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '4.0'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: mini_magick
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '3.2'
|
74
|
+
- - "<"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '5'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '3.2'
|
84
|
+
- - "<"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '5'
|
87
|
+
- !ruby/object:Gem::Dependency
|
88
|
+
name: bundler
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - "~>"
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2.0'
|
94
|
+
type: :development
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - "~>"
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '2.0'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: rake
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '10.0'
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '10.0'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: rspec
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "~>"
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '3.8'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - "~>"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '3.8'
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: pry
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
type: :development
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: awesome_print
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - "~>"
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "~>"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
description: Dervivatives Processor borrowed heavily from Samvera hydra-derivatives
|
158
|
+
with the added benefit of being decoupled to ActiveFedora
|
159
|
+
email:
|
160
|
+
- bbarber@bpl.org
|
161
|
+
executables: []
|
162
|
+
extensions: []
|
163
|
+
extra_rdoc_files: []
|
164
|
+
files:
|
165
|
+
- ".gitignore"
|
166
|
+
- ".rspec"
|
167
|
+
- ".travis.yml"
|
168
|
+
- Gemfile
|
169
|
+
- LICENSE.txt
|
170
|
+
- README.md
|
171
|
+
- Rakefile
|
172
|
+
- bin/console
|
173
|
+
- bin/setup
|
174
|
+
- bpl-derivatives.gemspec
|
175
|
+
- lib/bpl/derivatives.rb
|
176
|
+
- lib/bpl/derivatives/audio_encoder.rb
|
177
|
+
- lib/bpl/derivatives/config.rb
|
178
|
+
- lib/bpl/derivatives/datastream_decorator.rb
|
179
|
+
- lib/bpl/derivatives/input_object_decorator.rb
|
180
|
+
- lib/bpl/derivatives/io_decorator.rb
|
181
|
+
- lib/bpl/derivatives/logger.rb
|
182
|
+
- lib/bpl/derivatives/output_object_decorator.rb
|
183
|
+
- lib/bpl/derivatives/processors.rb
|
184
|
+
- lib/bpl/derivatives/processors/audio.rb
|
185
|
+
- lib/bpl/derivatives/processors/document.rb
|
186
|
+
- lib/bpl/derivatives/processors/ffmpeg.rb
|
187
|
+
- lib/bpl/derivatives/processors/image.rb
|
188
|
+
- lib/bpl/derivatives/processors/jpeg2k_image.rb
|
189
|
+
- lib/bpl/derivatives/processors/processor.rb
|
190
|
+
- lib/bpl/derivatives/processors/raw_image.rb
|
191
|
+
- lib/bpl/derivatives/processors/shell_based_processor.rb
|
192
|
+
- lib/bpl/derivatives/processors/video.rb
|
193
|
+
- lib/bpl/derivatives/processors/video/config.rb
|
194
|
+
- lib/bpl/derivatives/processors/video/processor.rb
|
195
|
+
- lib/bpl/derivatives/runners/audio_derivatives.rb
|
196
|
+
- lib/bpl/derivatives/runners/document_derivatives.rb
|
197
|
+
- lib/bpl/derivatives/runners/image_derivatives.rb
|
198
|
+
- lib/bpl/derivatives/runners/jpeg2k_image_derivatives.rb
|
199
|
+
- lib/bpl/derivatives/runners/pdf_derivatives.rb
|
200
|
+
- lib/bpl/derivatives/runners/runner.rb
|
201
|
+
- lib/bpl/derivatives/runners/video_derivatives.rb
|
202
|
+
- lib/bpl/derivatives/services/capability_service.rb
|
203
|
+
- lib/bpl/derivatives/services/mime_type_service.rb
|
204
|
+
- lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb
|
205
|
+
- lib/bpl/derivatives/services/persist_datastream_output_service.rb
|
206
|
+
- lib/bpl/derivatives/services/persist_file_system_output_service.rb
|
207
|
+
- lib/bpl/derivatives/services/persist_output_file_service.rb
|
208
|
+
- lib/bpl/derivatives/services/retrieve_source_file_from_datastream_service.rb
|
209
|
+
- lib/bpl/derivatives/services/retrieve_source_file_service.rb
|
210
|
+
- lib/bpl/derivatives/services/tempfile_service.rb
|
211
|
+
- lib/bpl/derivatives/version.rb
|
212
|
+
- lib/color_profiles/license.txt
|
213
|
+
- lib/color_profiles/sRGB_IEC61966-2-1_no_black_scaling.icc
|
214
|
+
homepage: https://github.com/boston-library/bpl-derivatives
|
215
|
+
licenses:
|
216
|
+
- MIT
|
217
|
+
metadata: {}
|
218
|
+
post_install_message:
|
219
|
+
rdoc_options: []
|
220
|
+
require_paths:
|
221
|
+
- lib
|
222
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - ">="
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
version: '0'
|
227
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">="
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
232
|
+
requirements: []
|
233
|
+
rubyforge_project:
|
234
|
+
rubygems_version: 2.6.14.3
|
235
|
+
signing_key:
|
236
|
+
specification_version: 4
|
237
|
+
summary: Dervivatives Processor borrowed heavily from Samvera hydra-derivatives
|
238
|
+
test_files: []
|