hydra-derivatives 3.8.0 → 4.1.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: 2b9642a74101fb1b816e9b1a6e994065991930c6d3fe51a48f698275b11291c8
4
- data.tar.gz: 3b4f2505d50372b3d52318deefaab4586028e48d3f6820c9179c1c747a7e4c2b
3
+ metadata.gz: d57cbceda9c0d06164a39a9d02c08f87d3595d2c7e4b651c45febd2b1f170304
4
+ data.tar.gz: 335f28d6f50ca793f9209cc0d178333958fe0900885dd60db887ee1d7967da39
5
5
  SHA512:
6
- metadata.gz: e9cdbf207aca051db6a3d281e7e019df5be05f4fa0b5f6e1c65b64cb6e3388c8838d9cd13991e7b1f740b1c79dbbd65b782dea3d7e5661a5bcdcd07c40bd540b
7
- data.tar.gz: d96492b3804b2f19effc7aa5c0de247080324c036efea58e34c7db7e1888ff14af9010654da8afd0ffbf9b62262359f208cb1458faef18785f40f9fbc9d25758
6
+ metadata.gz: 6f9a349b34da727f960c055363c6c49d82d1606e2f5679bf75c6c5d476493cc966f6257e74c171736e0ecacf28a8d997e20381b098844380d7a6deed24db54e9
7
+ data.tar.gz: 54834ba67208b3345c030b068ebe67c6b831e3541d9632973c91930c5b27a6e9025ca009fca5abec3313692062c0928131bcfbf1f924afd0345f20cbec739767
data/.circleci/config.yml CHANGED
@@ -27,8 +27,9 @@ jobs:
27
27
  - run:
28
28
  name: Install dependencies
29
29
  command: |
30
+ wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
30
31
  sudo apt-get update
31
- sudo apt-get install ghostscript libpng-dev imagemagick ffmpeg libreoffice dcraw
32
+ sudo apt-get install ghostscript libpng-dev imagemagick graphicsmagick libvips libvips-dev libvips-tools ffmpeg libreoffice dcraw
32
33
  - restore_cache:
33
34
  name: Restore Kakadu Cache
34
35
  keys:
@@ -38,7 +39,7 @@ jobs:
38
39
  command: |
39
40
  if [ ! -f ~/downloads/kakadu.zip ]; then
40
41
  mkdir -p ~/downloads
41
- wget http://kakadusoftware.com/wp-content/uploads/KDU805_Demo_Apps_for_Linux-x86-64_200602.zip -O ~/downloads/kakadu.zip
42
+ wget http://kakadusoftware.com/wp-content/uploads/KDU841_Demo_Apps_for_Linux-x86-64_231117.zip -O ~/downloads/kakadu.zip
42
43
  fi
43
44
  - save_cache:
44
45
  name: Save Kakadu Cache
@@ -49,7 +50,7 @@ jobs:
49
50
  name: Install Kakadu
50
51
  command: |
51
52
  unzip ~/downloads/kakadu.zip
52
- mv KDU805_Demo_Apps_for_Linux-x86-64_200602 kakadu
53
+ mv KDU841_Demo_Apps_for_Linux-x86-64_231117 kakadu
53
54
  sudo cp kakadu/*.so /usr/lib
54
55
  sudo cp kakadu/* /usr/bin
55
56
  kdu_compress -version
@@ -63,7 +64,7 @@ jobs:
63
64
  - samvera/bundle:
64
65
  ruby_version: << parameters.ruby_version >>
65
66
  bundler_version: << parameters.bundler_version >>
66
- cache_version: "2"
67
+ cache_version: "3"
67
68
 
68
69
  - samvera/install_solr_core
69
70
 
@@ -74,18 +75,15 @@ jobs:
74
75
  workflows:
75
76
  ci:
76
77
  jobs:
78
+ - bundle_lint_test:
79
+ name: ruby3-3
80
+ ruby_version: 3.3.5
77
81
  - bundle_lint_test:
78
82
  name: ruby3-2
79
- ruby_version: 3.2.0
83
+ ruby_version: 3.2.5
80
84
  - bundle_lint_test:
81
85
  name: ruby3-1
82
- ruby_version: 3.1.3
83
- - bundle_lint_test:
84
- name: ruby3-0
85
- ruby_version: 3.0.3
86
- - bundle_lint_test:
87
- name: ruby2-7
88
- ruby_version: 2.7.7
86
+ ruby_version: 3.1.6
89
87
 
90
88
  nightly:
91
89
  triggers:
@@ -96,15 +94,12 @@ workflows:
96
94
  only:
97
95
  - main
98
96
  jobs:
97
+ - bundle_lint_test:
98
+ name: ruby3-3
99
+ ruby_version: 3.3.5
99
100
  - bundle_lint_test:
100
101
  name: ruby3-2
101
- ruby_version: 3.2.0
102
+ ruby_version: 3.2.5
102
103
  - bundle_lint_test:
103
104
  name: ruby3-1
104
- ruby_version: 3.1.3
105
- - bundle_lint_test:
106
- name: ruby3-0
107
- ruby_version: 3.0.3
108
- - bundle_lint_test:
109
- name: ruby2-7
110
- ruby_version: 2.7.7
105
+ ruby_version: 3.1.6
data/.rubocop_todo.yml CHANGED
@@ -8,6 +8,7 @@ Layout/SpaceBeforeBlockBraces:
8
8
  Metrics/ClassLength:
9
9
  Exclude:
10
10
  - lib/hydra/derivatives/processors/jpeg2k_image.rb
11
+ - lib/hydra/derivatives/processors/image.rb
11
12
 
12
13
  Metrics/CyclomaticComplexity:
13
14
  Exclude:
data/Dockerfile ADDED
@@ -0,0 +1,37 @@
1
+ ARG RUBY_VERSION=3.2.2
2
+
3
+ FROM rubylang/ruby:$RUBY_VERSION-dev-jammy
4
+
5
+ RUN apt update && apt -y install \
6
+ imagemagick \
7
+ zip \
8
+ ghostscript \
9
+ libpng-dev \
10
+ libvips \
11
+ libvips-dev \
12
+ libvips-tools \
13
+ graphicsmagick \
14
+ ffmpeg \
15
+ libreoffice \
16
+ git \
17
+ dcraw \
18
+ libyaml-dev
19
+
20
+ ARG KAKADU_ZIP
21
+ RUN mkdir -p /opt/kakadu
22
+ COPY $KAKADU_ZIP.zip /opt/kakadu/downloads/kakadu.zip
23
+ RUN unzip /opt/kakadu/downloads/kakadu.zip \
24
+ && mv $KAKADU_ZIP kakadu \
25
+ && cp kakadu/*.so /usr/lib \
26
+ && cp kakadu/* /usr/bin
27
+
28
+ RUN sed -i 's/policy domain="coder" rights="none" pattern="PDF"/policy domain="coder" rights="read|write" pattern="PDF"/' /etc/ImageMagick-6/policy.xml
29
+ RUN sed -i 's/decode="dng:decode" command=".*"\/>$/decode="dng:decode" command="\&quot\;dcraw\&quot\; -c -q 3 -H 5 -w \&quot\;\%i\&quot\; \| \&quot\;convert\&quot\; - \&quot\;\%u\.png\&quot\;"\/>/' /etc/ImageMagick-6/delegates.xml
30
+
31
+ RUN addgroup --system --gid 1001 app && \
32
+ adduser --system --ingroup app --uid 1001 --shell /bin/sh --home /app app
33
+
34
+ RUN mkdir -p /app/samvera/hydra-derviatives
35
+ WORKDIR /app/samvera/hydra-derivatives
36
+ COPY ./ /app/samvera/hydra-derivatives
37
+ RUN gem install bundler && bundle install --jobs=3 --retry=3
data/Gemfile CHANGED
@@ -3,8 +3,6 @@ source 'https://rubygems.org'
3
3
  # Please see hydra-derivatives.gemspec for dependency information.
4
4
  gemspec
5
5
 
6
- gem 'sprockets', '~> 3.7'
7
-
8
6
  group :development, :test do
9
7
  gem 'bixby'
10
8
  gem 'rspec_junit_formatter'
data/README.md CHANGED
@@ -253,6 +253,40 @@ If you don't want to run the whole suite all at once like CI, do the following:
253
253
  1. Run the test servers with `rake derivatives:test_server`
254
254
  2. Run the tests.
255
255
 
256
+ ## Running tests with Docker
257
+
258
+ First, make sure you have installed [Docker](https://www.docker.com/).
259
+
260
+ Download the most recent version of the Linux Kakadu demo from [the downloads page](https://kakadusoftware.com/documentation-downloads/downloads/)
261
+ and place it in your cloned repository. (This requires signing up with an email address.)
262
+
263
+ Note the name of the zip file without the .zip extension. We will pass this name as an argument when building
264
+ the docker container. For example, if the name of the zip file is `KDU841_Demo_Apps_for_Linux-x86-64_231117.zip`,
265
+ we will pass `KDU841_Demo_Apps_for_Linux-x86-64_231117` to `docker compose build`.
266
+
267
+ Within your cloned repository, tell Docker to get started installing your development environment, replacing
268
+ `<name of zip file>` with the name of your downloaded file above.
269
+
270
+ ```sh
271
+ docker compose build --build-arg KAKADU_ZIP=<name of zip file>
272
+ docker compose up
273
+ ```
274
+
275
+ This starts containers for:
276
+
277
+ - Fedora
278
+ - Solr
279
+
280
+ It also builds an image containing all dependencies needed for the tests.
281
+
282
+ To stop the containers, type <kbd>Ctrl</kbd>+<kbd>c</kbd>. To restart the containers you need only run `docker compose up`.
283
+
284
+ You can run the full test suite using the following command:
285
+
286
+ ```sh
287
+ docker compose run -w /app/samvera/hydra-derivatives test sh -c "bundle exec rspec"
288
+ ```
289
+
256
290
  # Acknowledgments
257
291
 
258
292
  This software has been developed by and is brought to you by the Samvera community. Learn more at the
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.8.0
1
+ 4.1.0
@@ -0,0 +1,46 @@
1
+ version: '2.2'
2
+
3
+ volumes:
4
+ solr:
5
+ fcrepo:
6
+
7
+ networks:
8
+ internal:
9
+
10
+ services:
11
+
12
+ solr:
13
+ image: solr:8
14
+ ports:
15
+ - 8985:8983
16
+ command:
17
+ - bash
18
+ - "-c"
19
+ - "precreate-core hydra-test /opt/solr/server/configsets/hydra-test; exec solr -f"
20
+ volumes:
21
+ - .:/app
22
+ - ./solr/config:/opt/solr/server/configsets/hydra-test
23
+ - solr:/opt/solr/server/solr
24
+ networks:
25
+ internal:
26
+
27
+ fcrepo:
28
+ image: ghcr.io/samvera/fcrepo4:4.7.5
29
+ volumes:
30
+ - fcrepo:/data:cached
31
+ ports:
32
+ - 8986:8080
33
+ networks:
34
+ internal:
35
+
36
+ test:
37
+ build: .
38
+ env_file:
39
+ - test.env
40
+ volumes:
41
+ - .:/app/samvera/hydra-derivatives # Volume mounted
42
+ networks:
43
+ internal:
44
+ depends_on:
45
+ - fcrepo
46
+ - solr
@@ -18,17 +18,18 @@ Gem::Specification.new do |spec|
18
18
  spec.add_development_dependency 'bundler', '~> 2.1'
19
19
  spec.add_development_dependency 'fcrepo_wrapper', '~> 0.2'
20
20
  spec.add_development_dependency 'pry-byebug'
21
- spec.add_development_dependency 'rails', '> 5.1', '< 7.1'
21
+ spec.add_development_dependency 'rails', '> 5.1', '< 9.0'
22
22
  spec.add_development_dependency 'rake'
23
23
  spec.add_development_dependency 'rspec', '~> 3.1'
24
24
  spec.add_development_dependency "solr_wrapper"
25
25
 
26
- spec.add_dependency 'active_encode', '~> 0.1'
26
+ spec.add_dependency 'active_encode', '~> 1.2'
27
27
  spec.add_dependency 'active-fedora', '>= 14.0'
28
28
  spec.add_dependency 'active-triples', '>= 1.2'
29
- spec.add_dependency 'activesupport', '>= 4.0', '< 7.1'
29
+ spec.add_dependency 'activesupport', '>= 4.0', '< 9.0'
30
30
  spec.add_dependency 'addressable', '~> 2.5'
31
31
  spec.add_dependency 'deprecation'
32
32
  spec.add_dependency 'mime-types', '> 2.0', '< 4.0'
33
33
  spec.add_dependency 'mini_magick', '>= 3.2', '< 5'
34
+ spec.add_dependency 'ruby-vips'
34
35
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'mini_magick'
3
+ require 'ruby-vips'
3
4
 
4
5
  module Hydra::Derivatives::Processors
5
6
  class Image < Processor
@@ -20,22 +21,72 @@ module Hydra::Derivatives::Processors
20
21
  # When resizing images, it is necessary to flatten any layers, otherwise the background
21
22
  # may be completely black. This happens especially with PDFs. See #110
22
23
  def create_resized_image
23
- create_image do |xfrm|
24
+ if Hydra::Derivatives::ImageService.processor == :graphicsmagick
25
+ create_resized_image_with_graphicsmagick
26
+ elsif Hydra::Derivatives::ImageService.processor == :libvips
27
+ create_resized_image_with_libvips
28
+ else
29
+ create_resized_image_with_imagemagick
30
+ end
31
+ end
32
+
33
+ def create_resized_image_with_graphicsmagick
34
+ Hydra::Derivatives::Logger.debug('[ImageProcessor] Using GraphicsMagick image resize method')
35
+ create_image do |temp_file|
24
36
  if size
25
- xfrm.combine_options do |i|
26
- i.flatten
27
- i.resize(size)
37
+ # remove layers and resize using convert instead of mogrify
38
+ MiniMagick::Tool::Convert.new do |cmd|
39
+ cmd << temp_file.path # input
40
+ cmd.flatten
41
+ cmd.resize(size)
42
+ cmd << temp_file.path # output
28
43
  end
29
44
  end
30
45
  end
31
46
  end
32
47
 
48
+ def create_resized_image_with_imagemagick
49
+ Hydra::Derivatives::Logger.debug('[ImageProcessor] Using ImageMagick image resize method')
50
+ create_image do |temp_file|
51
+ if size
52
+ temp_file.flatten
53
+ temp_file.resize(size)
54
+ end
55
+ end
56
+ end
57
+
58
+ # rubocop:disable Metrics/MethodLength
59
+ def create_resized_image_with_libvips
60
+ Hydra::Derivatives::Logger.debug('[ImageProcessor] Using libvips resize method')
61
+ create_image do |temp_file|
62
+ if size
63
+ width, height, option = size.match(/(\d+)x(\d+)(.)?/).captures
64
+ # Translate imagemagick resize syntax into ruby-vips
65
+ size_option = case option
66
+ when '>'
67
+ :down
68
+ when '<'
69
+ :up
70
+ when '!'
71
+ :force
72
+ end
73
+ temp_file.thumbnail_image(width.to_i, height: height.to_i, size: size_option)
74
+ end
75
+ end
76
+ end
77
+ # rubocop:enable Metrics/MethodLength
78
+
33
79
  def create_image
34
- xfrm = selected_layers(load_image_transformer)
35
- yield(xfrm) if block_given?
36
- xfrm.format(directives.fetch(:format))
37
- xfrm.quality(quality.to_s) if quality
38
- write_image(xfrm)
80
+ if Hydra::Derivatives::ImageService.processor == :libvips
81
+ image = block_given? ? yield(load_image_transformer) : load_image_transformer
82
+ write_image_with_vips(image, directives)
83
+ else
84
+ xfrm = selected_layers(load_image_transformer)
85
+ yield(xfrm) if block_given?
86
+ xfrm.format(directives.fetch(:format))
87
+ xfrm.quality(quality.to_s) if quality
88
+ write_image(xfrm)
89
+ end
39
90
  end
40
91
 
41
92
  def write_image(xfrm)
@@ -45,10 +96,24 @@ module Hydra::Derivatives::Processors
45
96
  output_file_service.call(output_io, directives)
46
97
  end
47
98
 
99
+ def write_image_with_vips(image, directives)
100
+ output_io = StringIO.new
101
+ format = directives.fetch(:format, "jpg")
102
+ format_string = ".#{format}#{"[Q=#{quality}]" if quality}"
103
+ output_io.write(image.write_to_buffer(format_string))
104
+ output_io.rewind
105
+ output_file_service.call(output_io, directives)
106
+ end
107
+
48
108
  # Override this method if you want a different transformer, or need to load the
49
109
  # raw image from a different source (e.g. external file)
50
110
  def load_image_transformer
51
- MiniMagick::Image.open(source_path)
111
+ if Hydra::Derivatives::ImageService.processor == :libvips
112
+ # Vips specifies pdf layers at load time
113
+ selected_vips_layers(source_path)
114
+ else
115
+ MiniMagick::Image.open(source_path)
116
+ end
52
117
  end
53
118
 
54
119
  private
@@ -70,5 +135,13 @@ module Hydra::Derivatives::Processors
70
135
  image
71
136
  end
72
137
  end
138
+
139
+ def selected_vips_layers(source_path)
140
+ if `vipsheader #{Shellwords.escape(source_path)}` =~ /pdfload/i && directives.fetch(:layer, false)
141
+ Vips::Image.new_from_file(source_path, page: directives.fetch(:layer))
142
+ else
143
+ Vips::Image.new_from_file(source_path)
144
+ end
145
+ end
73
146
  end
74
147
  end
@@ -21,7 +21,7 @@ module Hydra::Derivatives::Processors::Video
21
21
 
22
22
  def mpeg4
23
23
  audio_encoder = Hydra::Derivatives::AudioEncoder.new
24
- @mpeg4 ||= CodecConfig.new("-vcodec libx264 -acodec #{audio_encoder.audio_encoder}")
24
+ @mpeg4 ||= CodecConfig.new("-vcodec libx264 -profile:v high -pix_fmt yuv420p -acodec #{audio_encoder.audio_encoder}")
25
25
  end
26
26
 
27
27
  def webm
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ module Hydra::Derivatives
3
+ module ImageService
4
+ def self.default_processor
5
+ :imagemagick
6
+ end
7
+
8
+ def self.processor
9
+ case ENV['IMAGE_PROCESSOR']
10
+ when 'imagemagick'
11
+ Hydra::Derivatives::Logger.debug('[ImageProcessor] Using ImageMagick as image processor')
12
+ :imagemagick
13
+ when 'graphicsmagick'
14
+ Hydra::Derivatives::Logger.debug('[ImageProcessor] Using GraphicsMagick as image processor')
15
+ :graphicsmagick
16
+ when 'libvips'
17
+ Hydra::Derivatives::Logger.debug('[ImageProcessor] Using libvips as image processor')
18
+ :libvips
19
+ else
20
+ Hydra::Derivatives::Logger.debug("[ImageProcessor] The environment variable IMAGE_PROCESSOR should be set to 'imagemagick','graphicsmagick' or 'libvips'. It is currently set to: #{ENV['IMAGE_PROCESSOR']}. Defaulting to using #{default_processor}")
21
+ default_processor
22
+ end
23
+ end
24
+ end
25
+ end
@@ -38,6 +38,7 @@ module Hydra
38
38
  autoload :PersistExternalFileOutputFileService
39
39
  autoload :TempfileService
40
40
  autoload :MimeTypeService
41
+ autoload :ImageService
41
42
  end
42
43
 
43
44
  # Raised if the timout elapses
data/test.env ADDED
@@ -0,0 +1,9 @@
1
+ FCREPO_HOST=fcrepo
2
+ FCREPO_PORT=8080
3
+ FCREPO_REST_PATH=rest
4
+ FCREPO_TEST_BASE_PATH=/test
5
+ SOLR_HOST=solr
6
+ SOLR_PORT=8983
7
+ SOLR_TEST_URL=http://solr:8983/solr/hydra-test
8
+ SOLR_URL=http://solr:8983/solr/
9
+ FCREPO_CONFIG_PATH=spec/support/config/fedora.yml
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-derivatives
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-08 00:00:00.000000000 Z
11
+ date: 2025-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -61,7 +61,7 @@ dependencies:
61
61
  version: '5.1'
62
62
  - - "<"
63
63
  - !ruby/object:Gem::Version
64
- version: '7.1'
64
+ version: '9.0'
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,7 +71,7 @@ dependencies:
71
71
  version: '5.1'
72
72
  - - "<"
73
73
  - !ruby/object:Gem::Version
74
- version: '7.1'
74
+ version: '9.0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +120,14 @@ dependencies:
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0.1'
123
+ version: '1.2'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0.1'
130
+ version: '1.2'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: active-fedora
133
133
  requirement: !ruby/object:Gem::Requirement
@@ -165,7 +165,7 @@ dependencies:
165
165
  version: '4.0'
166
166
  - - "<"
167
167
  - !ruby/object:Gem::Version
168
- version: '7.1'
168
+ version: '9.0'
169
169
  type: :runtime
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
@@ -175,7 +175,7 @@ dependencies:
175
175
  version: '4.0'
176
176
  - - "<"
177
177
  - !ruby/object:Gem::Version
178
- version: '7.1'
178
+ version: '9.0'
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: addressable
181
181
  requirement: !ruby/object:Gem::Requirement
@@ -244,6 +244,20 @@ dependencies:
244
244
  - - "<"
245
245
  - !ruby/object:Gem::Version
246
246
  version: '5'
247
+ - !ruby/object:Gem::Dependency
248
+ name: ruby-vips
249
+ requirement: !ruby/object:Gem::Requirement
250
+ requirements:
251
+ - - ">="
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ type: :runtime
255
+ prerelease: false
256
+ version_requirements: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
247
261
  description: Derivative generation plugin for hydra
248
262
  email:
249
263
  - jenlindner@gmail.com
@@ -261,6 +275,7 @@ files:
261
275
  - ".solr_wrapper"
262
276
  - CODE_OF_CONDUCT.md
263
277
  - CONTRIBUTING.md
278
+ - Dockerfile
264
279
  - Gemfile
265
280
  - History.md
266
281
  - LICENSE.txt
@@ -273,6 +288,7 @@ files:
273
288
  - config/jetty.yml
274
289
  - config/solr_wrapper_test.yml
275
290
  - doc/amazon_elastic_transcoder.md
291
+ - docker-compose.yml
276
292
  - hydra-derivatives.gemspec
277
293
  - lib/color_profiles/license.txt
278
294
  - lib/color_profiles/sRGB_IEC61966-2-1_no_black_scaling.icc
@@ -305,6 +321,7 @@ files:
305
321
  - lib/hydra/derivatives/runners/runner.rb
306
322
  - lib/hydra/derivatives/runners/video_derivatives.rb
307
323
  - lib/hydra/derivatives/services/capability_service.rb
324
+ - lib/hydra/derivatives/services/image_service.rb
308
325
  - lib/hydra/derivatives/services/mime_type_service.rb
309
326
  - lib/hydra/derivatives/services/persist_basic_contained_output_file_service.rb
310
327
  - lib/hydra/derivatives/services/persist_external_file_output_file_service.rb
@@ -328,6 +345,7 @@ files:
328
345
  - solr/config/xslt/example_atom.xsl
329
346
  - solr/config/xslt/example_rss.xsl
330
347
  - solr/config/xslt/luke.xsl
348
+ - test.env
331
349
  homepage: https://github.com/projecthydra/hydra-derivatives
332
350
  licenses:
333
351
  - APACHE2
@@ -348,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
366
  - !ruby/object:Gem::Version
349
367
  version: '0'
350
368
  requirements: []
351
- rubygems_version: 3.1.6
369
+ rubygems_version: 3.5.22
352
370
  signing_key:
353
371
  specification_version: 4
354
372
  summary: Derivative generation plugin for hydra