hydra-derivatives 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: e5c7df4967dcb508c79af83f929109d51177b4c9
4
- data.tar.gz: 8e6337d340b299ebde7aabc85f7b0157ff37382e
3
+ metadata.gz: d9915bdcf795eeb369e8d6d74c73ea28b6e123d7
4
+ data.tar.gz: 8324701965b3eeaafab56b3d7c4c1865c7a63523
5
5
  SHA512:
6
- metadata.gz: 571c14601cbe8d592c123e6522fc29ddc43071d61e6208d7c061ccebc717a0fa13a6cfcaec423ca6e7a4be7be9de942a6885df4eb724c388df12a5c2f7f963bb
7
- data.tar.gz: 0e2612a962f3f9c5d0da7114d89b1fcf78c7e5a11233b9dd347bc500a0ad8264f9c9d6cbf7d23e3ac974d9f3670b9015725c4f92338787c27afc001a90b00324
6
+ metadata.gz: 85e2b44fb759711a73de6a282732f919f5fc2cb6caf8bcb7f312d6e78238588b9321d174e45aca66cfd58cc01f43b4ba65207400f532be822333a5aa43031e9d
7
+ data.tar.gz: 7367297fea0431159120dca7805b16e54fd2c6e252368f6ef8b57e8bf7ce89f19931d8485fe50ce774a3500a73e3bb31b95fb591e8ed4dccfb05e0df3e6c83fc
data/History.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.1.1 (2014-07-21)
2
+ - Define a logger
3
+
1
4
  ## 0.1.0 (2014-05-09)
2
5
  - Add support for thumbnailing documents
3
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -16,6 +16,7 @@ module Hydra
16
16
  autoload :ExtractMetadata
17
17
  autoload :ShellBasedProcessor
18
18
  autoload :Jpeg2kImage
19
+ autoload :Logger
19
20
 
20
21
  def self.config
21
22
  @config ||= reset_config!
@@ -30,7 +30,7 @@ module Hydra
30
30
 
31
31
  def filename_for_characterization
32
32
  mime_type = MIME::Types[mimeType].first
33
- logger.warn "Unable to find a registered mime type for #{mimeType.inspect} on #{pid}" unless mime_type
33
+ Logger.warn "Unable to find a registered mime type for #{mimeType.inspect} on #{pid}" unless mime_type
34
34
  extension = mime_type ? ".#{mime_type.extensions.first}" : ''
35
35
  ["#{pid}-#{dsVersionID}", "#{extension}"]
36
36
  end
@@ -8,19 +8,16 @@ module Hydra
8
8
  include ShellBasedProcessor
9
9
 
10
10
  def process
11
- quality, colorspace = extract_quality_and_colorspace
11
+ image = MiniMagick::Image.read(source_datastream.content)
12
+ quality = image['%[channels]'] == 'gray' ? 'gray' : 'color'
12
13
  directives.each do |name, args|
13
- file_path = nil
14
- long_dim = nil
14
+ long_dim = self.class.long_dim(image)
15
+ file_path = self.class.tmp_file('.tif')
15
16
  to_srgb = args.fetch(:to_srgb, true)
16
17
  if args[:resize] || to_srgb
17
- image = preprocess(resize: args[:resize], to_srgb: to_srgb, src_quality: quality)
18
- long_dim = self.class.long_dim(image)
19
- file_path = self.class.tmp_file('.tif')
20
- image.write file_path
21
- else
22
- long_dim = self.class.long_dim(MiniMagick::Image.read(source_datastream.content))
18
+ preprocess(image, resize: args[:resize], to_srgb: to_srgb, src_quality: quality)
23
19
  end
20
+ image.write file_path
24
21
  recipe = self.class.kdu_compress_recipe(args, quality, long_dim)
25
22
  output_datastream_name = args[:datastream] || output_datastream_id(name)
26
23
  encode_datastream(output_datastream_name, recipe, file_path: file_path)
@@ -43,9 +40,8 @@ module Hydra
43
40
  end
44
41
 
45
42
  protected
46
- def preprocess(opts={})
47
- # resize: <geometry>, to_srgb: <bool>,src_quality: 'color'|'grey'
48
- image = MiniMagick::Image.read(source_datastream.content)
43
+ def preprocess(image, opts={})
44
+ # resize: <geometry>, to_srgb: <bool>, src_quality: 'color'|'gray'
49
45
  image.combine_options do |c|
50
46
  c.resize(opts[:resize]) if opts[:resize]
51
47
  c.profile self.class.srgb_profile_path if opts[:src_quality] == 'color' && opts[:to_srgb]
@@ -53,15 +49,6 @@ module Hydra
53
49
  image
54
50
  end
55
51
 
56
- def extract_quality_and_colorspace
57
- xml = source_datastream.extract_metadata
58
- doc = Nokogiri::XML(xml).remove_namespaces!
59
- bps = doc.xpath('//bitsPerSample').first.content
60
- quality = bps == '8 8 8' ? 'color' : 'grey'
61
- colorspace = doc.xpath('.//colorSpace').first.content
62
- [quality, colorspace]
63
- end
64
-
65
52
  def self.encode(path, recipe, output_file)
66
53
  kdu_compress = Hydra::Derivatives.kdu_compress_path
67
54
  execute "#{kdu_compress} -i #{path} -o #{output_file} #{recipe}"
@@ -89,7 +76,7 @@ module Hydra
89
76
  if Hydra::Derivatives.kdu_compress_recipes.has_key? recipe
90
77
  return Hydra::Derivatives.kdu_compress_recipes[recipe]
91
78
  else
92
- logger.warn "No JP2 recipe for :#{args[:recipe].to_s} ('#{recipe}') found in configuration. Using best guess."
79
+ Logger.warn "No JP2 recipe for :#{args[:recipe].to_s} ('#{recipe}') found in configuration. Using best guess."
93
80
  return Hydra::Derivatives::Jpeg2kImage.calculate_recipe(args,quality,long_dim)
94
81
  end
95
82
  elsif args[:recipe].is_a? String
@@ -104,7 +91,7 @@ module Hydra
104
91
  rates_arg = Hydra::Derivatives::Jpeg2kImage.layer_rates(args.fetch(:layers, 8), args.fetch(:compression, 10))
105
92
  tile_size = args.fetch(:tile_size, 1024)
106
93
  tiles_arg = "\{#{tile_size},#{tile_size}\}"
107
- jp2_space_arg = quality == 'grey' ? 'sLUM' : 'sRGB'
94
+ jp2_space_arg = quality == 'gray' ? 'sLUM' : 'sRGB'
108
95
 
109
96
  %Q{-rate #{rates_arg}
110
97
  -jp2_space #{jp2_space_arg}
@@ -0,0 +1,24 @@
1
+ module Hydra::Derivatives
2
+ class Logger
3
+
4
+ class << self
5
+
6
+ def method_missing method_name, *arguments, &block
7
+ logger.send(method_name, *arguments, &block)
8
+ rescue
9
+ super
10
+ end
11
+
12
+ def respond_to?(method_name, include_private = false)
13
+ logger.respond_to? method_name
14
+ end
15
+
16
+ private
17
+
18
+ def logger
19
+ ActiveFedora::Base.logger || ::Logger.new(STDOUT)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -21,12 +21,16 @@ module Hydra::Derivatives
21
21
  context '#extract_metadata' do
22
22
  context 'without content' do
23
23
  let(:initialization_options) { {content: '', mime_type: 'text/plain'} }
24
- its(:extract_metadata) { should be_nil}
24
+ it 'should be nil' do
25
+ expect(subject.extract_metadata).to be_nil
26
+ end
25
27
  end
26
28
 
27
29
  context 'with content', unless: ENV['TRAVIS'] == 'true' do
28
30
  let(:mime_type) { 'image/jpeg' }
29
- its(:extract_metadata) { should match("<identity format=\"Plain text\" mimetype=\"text/plain\"")}
31
+ it 'should get some XML' do
32
+ expect(subject.extract_metadata).to match "<identity format=\"Plain text\" mimetype=\"text/plain\""
33
+ end
30
34
  end
31
35
  end
32
36
 
@@ -36,4 +40,4 @@ module Hydra::Derivatives
36
40
  end
37
41
  end
38
42
  end
39
- end
43
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,8 @@
1
- require 'rspec/autorun'
2
1
  ENV['environment'] ||= 'test'
3
2
  # - RSpec adds ./lib to the $LOAD_PATH
4
3
  require 'hydra/derivatives'
5
4
  #Resque.inline = Rails.env.test?
5
+ require 'byebug' unless ENV['TRAVIS']
6
6
 
7
7
  RSpec.configure do |config|
8
8
  end
@@ -4,31 +4,31 @@ describe "the configuration" do
4
4
  subject {Hydra::Derivatives }
5
5
 
6
6
  it "should have some configuration defaults" do
7
- subject.ffmpeg_path.should == 'ffmpeg'
8
- subject.enable_ffmpeg.should be_true
9
- subject.libreoffice_path.should == 'soffice'
10
- subject.temp_file_base.should == '/tmp'
11
- subject.fits_path.should == 'fits.sh'
12
- subject.kdu_compress_path.should == 'kdu_compress'
7
+ expect(subject.ffmpeg_path).to eq('ffmpeg')
8
+ expect(subject.enable_ffmpeg).to be true
9
+ expect(subject.libreoffice_path).to eq('soffice')
10
+ expect(subject.temp_file_base).to eq('/tmp')
11
+ expect(subject.fits_path).to eq('fits.sh')
12
+ expect(subject.kdu_compress_path).to eq('kdu_compress')
13
13
  end
14
14
 
15
15
  it "should let you change the configuration" do
16
16
  subject.ffmpeg_path = '/usr/local/ffmpeg-1.0/bin/ffmpeg'
17
- subject.ffmpeg_path.should == '/usr/local/ffmpeg-1.0/bin/ffmpeg'
17
+ expect(subject.ffmpeg_path).to eq('/usr/local/ffmpeg-1.0/bin/ffmpeg')
18
18
 
19
19
  subject.kdu_compress_path = '/opt/local/bin/kdu_compress'
20
- subject.kdu_compress_path.should == '/opt/local/bin/kdu_compress'
20
+ expect(subject.kdu_compress_path).to eq('/opt/local/bin/kdu_compress')
21
21
 
22
22
  end
23
23
 
24
24
  it "should let you reset the configuration" do
25
25
  subject.ffmpeg_path = '/usr/local/ffmpeg-1.0/bin/ffmpeg'
26
26
  subject.reset_config!
27
- subject.ffmpeg_path.should == 'ffmpeg'
27
+ expect(subject.ffmpeg_path).to eq('ffmpeg')
28
28
 
29
29
  subject.kdu_compress_path = '/usr/local/bin/kdu_compress'
30
30
  subject.reset_config!
31
- subject.kdu_compress_path.should == 'kdu_compress'
31
+ expect(subject.kdu_compress_path).to eq('kdu_compress')
32
32
  end
33
33
 
34
34
  end
@@ -16,7 +16,7 @@ describe Hydra::Derivatives::ExtractMetadata, :unless => $in_travis do
16
16
  xml = subject.extract_metadata
17
17
  doc = Nokogiri::HTML(xml)
18
18
  identity = doc.xpath('//identity').first
19
- identity.attr('mimetype').should == 'image/png'
19
+ expect(identity.attr('mimetype')).to eq('image/png')
20
20
  end
21
21
  end
22
22
  end
@@ -7,8 +7,8 @@ describe Hydra::Derivatives::Image do
7
7
  subject { Hydra::Derivatives::Image.new(object, 'content', directives)}
8
8
 
9
9
  it "should use the string as the size and the name is autogenerated" do
10
- subject.should_receive(:create_resized_image).with(an_instance_of(ActiveFedora::Datastream), "100x100>", 'png') do |ds|
11
- ds.dsid.should == 'content_thumb'
10
+ expect(subject).to receive(:create_resized_image).with(an_instance_of(ActiveFedora::Datastream), "100x100>", 'png') do |ds|
11
+ expect(ds.dsid).to eq('content_thumb')
12
12
  end
13
13
  subject.process
14
14
  end
@@ -17,8 +17,8 @@ describe Hydra::Derivatives::Image do
17
17
  let(:directives) {{ :thumb => {size: "200x300>", datastream: 'thumbnail'} }}
18
18
  subject { Hydra::Derivatives::Image.new(object, 'content', directives)}
19
19
  it "should use the specified size and name" do
20
- subject.should_receive(:create_resized_image).with(an_instance_of(ActiveFedora::Datastream), "200x300>", 'png') do |ds|
21
- ds.dsid.should == 'thumbnail'
20
+ expect(subject).to receive(:create_resized_image).with(an_instance_of(ActiveFedora::Datastream), "200x300>", 'png') do |ds|
21
+ expect(ds.dsid).to eq('thumbnail')
22
22
  end
23
23
  subject.process
24
24
 
@@ -7,14 +7,14 @@ describe Hydra::Derivatives::Jpeg2kImage do
7
7
  describe "#calculate_recipe" do
8
8
  it "calculates the number of levels from a size" do
9
9
  dim = 7200
10
- Hydra::Derivatives::Jpeg2kImage.level_count_for_size(dim).should == 6
10
+ expect(Hydra::Derivatives::Jpeg2kImage.level_count_for_size(dim)).to eq(6)
11
11
  end
12
12
 
13
13
  it "calculates the compression rates for each quality layer" do
14
14
  compression_num = 10
15
15
  layers = 8
16
16
  calc = Hydra::Derivatives::Jpeg2kImage.layer_rates(layers, compression_num)
17
- calc.should == "2.4,1.48331273,0.91675694,0.56659885,0.3501847,0.21643059,0.13376427,0.0826726"
17
+ expect(calc).to eq("2.4,1.48331273,0.91675694,0.56659885,0.3501847,0.21643059,0.13376427,0.0826726")
18
18
  end
19
19
 
20
20
  end
@@ -28,25 +28,25 @@ describe Hydra::Derivatives::Jpeg2kImage do
28
28
  it "can get the recipe from a config file" do
29
29
  args = { recipe: :myrecipe }
30
30
  r = Hydra::Derivatives::Jpeg2kImage.kdu_compress_recipe(args, 'grey', 7200)
31
- r.should == @sample_cfg['jp2_recipes']['myrecipe_grey']
31
+ expect(r).to eq(@sample_cfg['jp2_recipes']['myrecipe_grey'])
32
32
  end
33
33
 
34
34
  it "can take a recipe as a string" do
35
35
  args = { recipe: '-my -excellent -recipe' }
36
36
  r = Hydra::Derivatives::Jpeg2kImage.kdu_compress_recipe(args, 'grey', 7200)
37
- r.should == args[:recipe]
37
+ expect(r).to eq(args[:recipe])
38
38
  end
39
39
 
40
40
  it "will fall back to a #calculate_recipe if a symbol is passed but no recipe is found" do
41
41
  args = { recipe: :x }
42
42
  r = Hydra::Derivatives::Jpeg2kImage.kdu_compress_recipe(args, 'grey', 7200)
43
- r.should == Hydra::Derivatives::Jpeg2kImage.calculate_recipe(args, 'grey', 7200)
43
+ expect(r).to eq(Hydra::Derivatives::Jpeg2kImage.calculate_recipe(args, 'grey', 7200))
44
44
  end
45
45
 
46
46
  it "will fall back to a #calculate_recipe if there is no attempt to provide one" do
47
47
  args = {}
48
48
  r = Hydra::Derivatives::Jpeg2kImage.kdu_compress_recipe(args, 'grey', 7200)
49
- r.should == Hydra::Derivatives::Jpeg2kImage.calculate_recipe(args, 'grey', 7200)
49
+ expect(r).to eq(Hydra::Derivatives::Jpeg2kImage.calculate_recipe(args, 'grey', 7200))
50
50
  end
51
51
 
52
52
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hydra::Derivatives::Logger do
4
+
5
+ context "with log levels" do
6
+
7
+ let(:levels) { ["unknown", "fatal", "error", "warn", "info", "debug"] }
8
+
9
+ it "should respond successfully" do
10
+ levels.each do |level|
11
+ expect(Hydra::Derivatives::Logger.respond_to?(level)).to be_truthy
12
+ end
13
+ end
14
+ it "should accept messages" do
15
+ expect(Hydra::Derivatives::Logger.warn("message")).to be_truthy
16
+ end
17
+ end
18
+
19
+ context "with garbage" do
20
+ it "should raise an error" do
21
+ expect{Hydra::Derivatives::Logger.garbage}.to raise_error(NoMethodError)
22
+ end
23
+ end
24
+
25
+ end
@@ -70,15 +70,15 @@ describe "Transcoder" do
70
70
  end
71
71
 
72
72
  it "should transcode" do
73
- file.datastreams.key?('content_medium').should be_false
73
+ expect(file.datastreams.key?('content_medium')).to be_falsey
74
74
  file.create_derivatives
75
- file.datastreams['content_medium'].should have_content
76
- file.datastreams['content_medium'].mimeType.should == 'image/png'
77
- file.datastreams['content_thumb'].should have_content
78
- file.datastreams['content_thumb'].mimeType.should == 'image/png'
79
- file.datastreams['access'].should have_content
80
- file.datastreams['access'].mimeType.should == 'image/jpeg'
81
- file.datastreams.key?('content_text').should be_false
75
+ expect(file.datastreams['content_medium']).to have_content
76
+ expect(file.datastreams['content_medium'].mimeType).to eq('image/png')
77
+ expect(file.datastreams['content_thumb']).to have_content
78
+ expect(file.datastreams['content_thumb'].mimeType).to eq('image/png')
79
+ expect(file.datastreams['access']).to have_content
80
+ expect(file.datastreams['access'].mimeType).to eq('image/jpeg')
81
+ expect(file.datastreams.key?('content_text')).to be_falsey
82
82
  end
83
83
  end
84
84
 
@@ -87,10 +87,10 @@ describe "Transcoder" do
87
87
  let(:file) { GenericFile.new(mime_type: 'application/pdf').tap { |t| t.content.content = attachment; t.save } }
88
88
 
89
89
  it "should transcode" do
90
- file.datastreams.key?('content_thumb').should be_false
90
+ expect(file.datastreams.key?('content_thumb')).to be_falsey
91
91
  file.create_derivatives
92
- file.datastreams['content_thumb'].should have_content
93
- file.datastreams['content_thumb'].mimeType.should == 'image/png'
92
+ expect(file.datastreams['content_thumb']).to have_content
93
+ expect(file.datastreams['content_thumb'].mimeType).to eq('image/png')
94
94
  end
95
95
  end
96
96
 
@@ -100,10 +100,10 @@ describe "Transcoder" do
100
100
 
101
101
  it "should transcode" do
102
102
  file.create_derivatives
103
- file.datastreams['content_mp3'].should have_content
104
- file.datastreams['content_mp3'].mimeType.should == 'audio/mpeg'
105
- file.datastreams['content_ogg'].should have_content
106
- file.datastreams['content_ogg'].mimeType.should == 'audio/ogg'
103
+ expect(file.datastreams['content_mp3']).to have_content
104
+ expect(file.datastreams['content_mp3'].mimeType).to eq('audio/mpeg')
105
+ expect(file.datastreams['content_ogg']).to have_content
106
+ expect(file.datastreams['content_ogg'].mimeType).to eq('audio/ogg')
107
107
  end
108
108
  end
109
109
 
@@ -112,10 +112,9 @@ describe "Transcoder" do
112
112
  let(:file) { GenericFile.new(mime_type: 'audio/wav').tap { |t| t.content.content = attachment; t.content.mimeType = 'audio/vnd.wav'; t.save } }
113
113
 
114
114
  it "should transcode" do
115
- expect(logger).to receive(:warn).with("Unable to find a registered mime type for \"audio/vnd.wav\" on #{file.pid}").twice
116
115
  file.create_derivatives
117
- file.datastreams['content_mp3'].should have_content
118
- file.datastreams['content_mp3'].mimeType.should == 'audio/mpeg'
116
+ expect(file.datastreams['content_mp3']).to have_content
117
+ expect(file.datastreams['content_mp3'].mimeType).to eq('audio/mpeg')
119
118
  end
120
119
  end
121
120
 
@@ -125,12 +124,12 @@ describe "Transcoder" do
125
124
 
126
125
  it "should transcode" do
127
126
  file.create_derivatives
128
- file.datastreams['content_mp4'].should have_content
129
- file.datastreams['content_mp4'].mimeType.should == 'video/mp4'
130
- file.datastreams['content_webm'].should have_content
131
- file.datastreams['content_webm'].mimeType.should == 'video/webm'
132
- file.datastreams['thumbnail'].should have_content
133
- file.datastreams['thumbnail'].mimeType.should == 'image/jpeg'
127
+ expect(file.datastreams['content_mp4']).to have_content
128
+ expect(file.datastreams['content_mp4'].mimeType).to eq('video/mp4')
129
+ expect(file.datastreams['content_webm']).to have_content
130
+ expect(file.datastreams['content_webm'].mimeType).to eq('video/webm')
131
+ expect(file.datastreams['thumbnail']).to have_content
132
+ expect(file.datastreams['thumbnail'].mimeType).to eq('image/jpeg')
134
133
  end
135
134
  end
136
135
 
@@ -139,11 +138,11 @@ describe "Transcoder" do
139
138
  let(:file) { GenericFile.new(mime_type: 'image/png', label: "special").tap { |t| t.content.content = attachment; t.save } }
140
139
 
141
140
  it "should transcode" do
142
- file.datastreams.key?('special_ds').should be_false
141
+ expect(file.datastreams.key?('special_ds')).to be_falsey
143
142
  file.create_derivatives
144
- file.datastreams['special_ds'].should have_content
145
- file.datastreams['special_ds'].mimeType.should == 'image/png'
146
- file.datastreams['special_ds'].should have_content
143
+ expect(file.datastreams['special_ds']).to have_content
144
+ expect(file.datastreams['special_ds'].mimeType).to eq('image/png')
145
+ expect(file.datastreams['special_ds']).to have_content
147
146
  end
148
147
  end
149
148
 
@@ -212,14 +211,14 @@ describe "Transcoder" do
212
211
  let(:file) { GenericFile.new(mime_type: 'image/tiff').tap { |t| t.content.content = attachment; t.save } }
213
212
  it "should transcode" do
214
213
  file.create_derivatives
215
- file.datastreams['content_diy'].should have_content
216
- file.datastreams['content_diy'].mimeType.should == 'image/jp2'
217
- file.datastreams['config_lookup'].should have_content
218
- file.datastreams['config_lookup'].mimeType.should == 'image/jp2'
219
- file.datastreams['resized'].should have_content
220
- file.datastreams['resized'].mimeType.should == 'image/jp2'
221
- file.datastreams['string_recipe'].should have_content
222
- file.datastreams['string_recipe'].mimeType.should == 'image/jp2'
214
+ expect(file.datastreams['content_diy']).to have_content
215
+ expect(file.datastreams['content_diy'].mimeType).to eq('image/jp2')
216
+ expect(file.datastreams['config_lookup']).to have_content
217
+ expect(file.datastreams['config_lookup'].mimeType).to eq('image/jp2')
218
+ expect(file.datastreams['resized']).to have_content
219
+ expect(file.datastreams['resized'].mimeType).to eq('image/jp2')
220
+ expect(file.datastreams['string_recipe']).to have_content
221
+ expect(file.datastreams['string_recipe'].mimeType).to eq('image/jp2')
223
222
  end
224
223
  end
225
224
  end
@@ -6,7 +6,7 @@ describe Hydra::Derivatives::Video do
6
6
  let(:directives) {{ :thumb => {format: "webm", datastream: 'thumbnail'} }}
7
7
  subject { Hydra::Derivatives::Video.new(double(:obj), 'content', directives)}
8
8
  it "should create a datastream with the specified name" do
9
- subject.should_receive(:encode_datastream).with("thumbnail", "webm", 'video/webm', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec libvpx -acodec libvorbis -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
9
+ expect(subject).to receive(:encode_datastream).with("thumbnail", "webm", 'video/webm', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec libvpx -acodec libvorbis -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
10
10
  subject.process
11
11
 
12
12
  end
@@ -16,7 +16,7 @@ describe Hydra::Derivatives::Video do
16
16
  let(:directives) {{ :thumb => {format: "webm"} }}
17
17
  subject { Hydra::Derivatives::Video.new(double(:obj), 'content', directives)}
18
18
  it "should create a datastream and infer the name" do
19
- subject.should_receive(:encode_datastream).with("content_thumb", "webm", 'video/webm', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec libvpx -acodec libvorbis -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
19
+ expect(subject).to receive(:encode_datastream).with("content_thumb", "webm", 'video/webm', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec libvpx -acodec libvorbis -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
20
20
  subject.process
21
21
 
22
22
  end
@@ -26,7 +26,7 @@ describe Hydra::Derivatives::Video do
26
26
  let(:directives) {{ :thumb => {:format => 'jpg' , datastream: 'thumbnail'} }}
27
27
  subject { Hydra::Derivatives::Video.new(double(:obj), 'content', directives)}
28
28
  it "should create a datastream and infer the name" do
29
- subject.should_receive(:encode_datastream).with("thumbnail", "jpg", "image/jpeg", {:output_options=>"-s 320x240 -vcodec mjpeg -vframes 1 -an -f rawvideo", :input_options=>" -itsoffset -2"})
29
+ expect(subject).to receive(:encode_datastream).with("thumbnail", "jpg", "image/jpeg", {:output_options=>"-s 320x240 -vcodec mjpeg -vframes 1 -an -f rawvideo", :input_options=>" -itsoffset -2"})
30
30
  subject.process
31
31
 
32
32
  end
metadata CHANGED
@@ -1,131 +1,131 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-derivatives
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-10 00:00:00.000000000 Z
11
+ date: 2014-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jettywrapper
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: active-fedora
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: hydra-file_characterization
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: mini_magick
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activesupport
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: 3.2.13
118
- - - <
118
+ - - "<"
119
119
  - !ruby/object:Gem::Version
120
120
  version: '5.0'
121
121
  type: :runtime
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: 3.2.13
128
- - - <
128
+ - - "<"
129
129
  - !ruby/object:Gem::Version
130
130
  version: '5.0'
131
131
  description: Derivative generation plugin for hydra
@@ -135,9 +135,9 @@ executables: []
135
135
  extensions: []
136
136
  extra_rdoc_files: []
137
137
  files:
138
- - .gitignore
139
- - .rspec
140
- - .travis.yml
138
+ - ".gitignore"
139
+ - ".rspec"
140
+ - ".travis.yml"
141
141
  - CONTRIBUTING.md
142
142
  - Gemfile
143
143
  - History.md
@@ -157,8 +157,8 @@ files:
157
157
  - lib/hydra/derivatives/extract_metadata.rb
158
158
  - lib/hydra/derivatives/ffmpeg.rb
159
159
  - lib/hydra/derivatives/image.rb
160
- - lib/hydra/derivatives/jpeg2k_config.yml
161
160
  - lib/hydra/derivatives/jpeg2k_image.rb
161
+ - lib/hydra/derivatives/logger.rb
162
162
  - lib/hydra/derivatives/processor.rb
163
163
  - lib/hydra/derivatives/railtie.rb
164
164
  - lib/hydra/derivatives/shell_based_processor.rb
@@ -183,6 +183,7 @@ files:
183
183
  - spec/units/extract_spec.rb
184
184
  - spec/units/image_spec.rb
185
185
  - spec/units/jpeg2k_spec.rb
186
+ - spec/units/logger_spec.rb
186
187
  - spec/units/transcoding_spec.rb
187
188
  - spec/units/video_spec.rb
188
189
  homepage: https://github.com/projecthydra/hydra-derivatives
@@ -195,12 +196,12 @@ require_paths:
195
196
  - lib
196
197
  required_ruby_version: !ruby/object:Gem::Requirement
197
198
  requirements:
198
- - - '>='
199
+ - - ">="
199
200
  - !ruby/object:Gem::Version
200
201
  version: '0'
201
202
  required_rubygems_version: !ruby/object:Gem::Requirement
202
203
  requirements:
203
- - - '>='
204
+ - - ">="
204
205
  - !ruby/object:Gem::Version
205
206
  version: '0'
206
207
  requirements: []
@@ -230,5 +231,6 @@ test_files:
230
231
  - spec/units/extract_spec.rb
231
232
  - spec/units/image_spec.rb
232
233
  - spec/units/jpeg2k_spec.rb
234
+ - spec/units/logger_spec.rb
233
235
  - spec/units/transcoding_spec.rb
234
236
  - spec/units/video_spec.rb
@@ -1,20 +0,0 @@
1
- defaults: &defaults
2
- jp2_recipes:
3
- # note that these aren't real recipes, just enough to test configuration options
4
- myrecipe_color: >
5
- -rate 2.4
6
- -jp2_space sRGB
7
- Stiles=\{1024,1024\}
8
- myrecipe_grey: >
9
- -rate 2.4
10
- -jp2_space sLUM
11
- Stiles=\{1024,1024\}
12
-
13
- development:
14
- <<: *defaults
15
-
16
- test:
17
- <<: *defaults
18
-
19
- production:
20
- <<: *defaults