hydra-derivatives 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/CONTRIBUTING.md CHANGED
@@ -78,6 +78,8 @@ You should also add yourself to the `CONTRIBUTORS.md` file in the root of the pr
78
78
 
79
79
  ### Submitting Changes
80
80
 
81
+ [Detailed Walkthrough of One Pull Request per Commit](http://ndlib.github.io/practices/one-commit-per-pull-request/)
82
+
81
83
  * Read the article ["Using Pull Requests"](https://help.github.com/articles/using-pull-requests) on GitHub.
82
84
  * Make sure your branch is up to date with its parent branch (i.e. master)
83
85
  * `git checkout master`
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  hydra-derivatives
2
2
  =================
3
+ [![Gem Version](https://badge.fury.io/rb/hydra-derivatives.png)](http://badge.fury.io/rb/hydra-derivatives)
3
4
 
4
5
  Derivative generation for hydra
5
6
 
@@ -47,8 +48,8 @@ Or a class like this:
47
48
  transform_datastream :content, { :mp3 => {format: 'mp3'}, :ogg => {format: 'ogg'} }, processor: :audio
48
49
  when 'video/avi'
49
50
  transform_datastream :content, { :mp4 => {format: 'mp4'}, :webm => {format: 'webm'} }, processor: :video
50
- when 'image/png', 'image/jpg'
51
- transform_datastream :content, { :medium => "300x300>", :thumb => "100x100>" }
51
+ when 'image/png', 'image/jpg', 'image/tiff'
52
+ transform_datastream :content, { :medium => "300x300>", :thumb => {size: "100x100>", datastream: 'thumbnail'} }
52
53
  end
53
54
  end
54
55
  end
@@ -63,20 +64,31 @@ And you add some content to it:
63
64
  obj.save
64
65
  ```
65
66
 
66
- Then when you call `obj.create_derivatives` a new datastream, called 'thumbnail' will have been created, with a downsized image in it.
67
+ Then when you call `obj.create_derivatives` two new datastreams, 'thumbnail' and 'content_medium', will have been created with downsized images in them.
67
68
 
68
69
  We recommend you run `obj.create_derivatives` in a background worker, because some derivative creation (especially videos) can take a long time.
69
70
 
70
71
  # Installation
71
72
 
73
+ Just add `gem 'hydra-derivatives'` to your Gemfile.
74
+
72
75
  ## Dependencies
73
76
 
74
77
  * [Fits](https://code.google.com/p/fits/)
78
+ * [FFMpeg](http://www.ffmpeg.org/)
75
79
  * [LibreOffice](https://www.libreoffice.org/)
76
80
 
77
- To enable LibreOffice and Fits.sh support, you must make sure they are on your path. Most people will put that in their .bash_profile or somewhere similar. For example:
81
+ To enable LibreOffice, FFMpeg and Fits.sh support, you make sure they are on your path. Most people will put that in their .bash_profile or somewhere similar. For example:
78
82
 
79
83
  ```bash
80
84
  # in .bash_profile
81
85
  export PATH=${PATH}:/Users/justin/workspace/fits-0.6.2:/Applications/LibreOffice.app/Contents/MacOS
82
86
  ```
87
+
88
+ Alternatively, you can configure their paths:
89
+ ```ruby
90
+ Hydra::Derivatives.ffmpeg_path = '/opt/local/ffmpeg/bin/ffmpeg'
91
+ Hydra::Derivatives.fits_path = '/opt/local/fits/bin/fits.sh'
92
+ Hydra::Derivatives.libreoffice_path = '/opt/local/libreoffice_path/bin/soffice'
93
+
94
+ ```
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -23,7 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec"
24
24
 
25
25
  spec.add_dependency 'active-fedora'
26
- spec.add_dependency 'rmagick'
26
+ spec.add_dependency 'hydra-file_characterization'
27
+ spec.add_dependency 'mini_magick'
27
28
  spec.add_dependency 'activesupport', '>= 3.2.13', '< 5.0'
28
29
  end
29
30
 
@@ -1,5 +1,4 @@
1
1
  require 'active_fedora'
2
- require 'RMagick'
3
2
  module Hydra
4
3
  module Derivatives
5
4
  extend ActiveSupport::Concern
@@ -27,6 +27,12 @@ module Hydra
27
27
  'application/pdf'
28
28
  when 'odf'
29
29
  'application/vnd.oasis.opendocument.text'
30
+ when 'docx'
31
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
32
+ when 'xslx'
33
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
34
+ when 'pptx'
35
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
30
36
  else
31
37
  raise "I don't know about the format '#{format}'"
32
38
  end
@@ -1,58 +1,24 @@
1
- require 'open3'
1
+ require 'hydra-file_characterization'
2
2
  module Hydra
3
3
  module Derivatives
4
4
  module ExtractMetadata
5
- include Open3
6
5
 
7
6
  def extract_metadata
8
- out = nil
9
- to_tempfile do |f|
10
- out = run_fits!(f.path)
11
- end
12
- out
13
- end
14
-
15
- def to_tempfile &block
16
7
  return unless has_content?
17
- type = MIME::Types[mimeType].first
18
- logger.warn "Unable to find a registered mime type for #{mimeType.inspect} on #{pid}" unless type
19
- extension = type ? ".#{type.extensions.first}" : ''
20
-
21
- f = Tempfile.new(["#{pid}-#{dsVersionID}", extension])
22
- f.binmode
23
- if content.respond_to? :read
24
- f.write(content.read)
25
- else
26
- f.write(content)
8
+ Hydra::FileCharacterization.characterize(content, filename_for_characterization, :fits) do |config|
9
+ config[:fits] = Hydra::Derivatives.fits_path
27
10
  end
28
- f.close
29
- content.rewind if content.respond_to? :rewind
30
- yield(f)
31
- f.unlink
32
11
  end
33
12
 
34
- private
35
-
36
-
37
- def run_fits!(file_path)
38
- command = "#{fits_path} -i \"#{file_path}\""
39
- stdin, stdout, stderr, wait_thr = popen3(command)
40
- stdin.close
41
- out = stdout.read
42
- stdout.close
43
- err = stderr.read
44
- stderr.close
45
- exit_status = wait_thr.value
46
- raise "Unable to execute command \"#{command}\"\n#{err}" unless exit_status.success?
47
- out
48
- end
49
-
50
-
51
- def fits_path
52
- Hydra::Derivatives.fits_path
53
- end
13
+ protected
54
14
 
15
+ def filename_for_characterization
16
+ mime_type = MIME::Types[mimeType].first
17
+ logger.warn "Unable to find a registered mime type for #{mimeType.inspect} on #{pid}" unless mime_type
18
+ extension = mime_type ? ".#{mime_type.extensions.first}" : ''
19
+ "#{pid}-#{dsVersionID}#{extension}"
55
20
  end
21
+
56
22
  end
23
+ end
57
24
  end
58
-
@@ -1,3 +1,4 @@
1
+ require 'mini_magick'
1
2
  module Hydra
2
3
  module Derivatives
3
4
  class Image < Processor
@@ -16,33 +17,32 @@ module Hydra
16
17
  MIME::Types.type_for(format).first.to_s
17
18
  end
18
19
 
19
- def create_resized_image(output_ds, size, format, quality=nil)
20
- create_image(output_ds, format, quality) do |xfrm|
21
- if size
22
- xfrm.change_geometry!(size) do |cols, rows, img|
23
- img.resize!(cols, rows)
24
- end
25
- end
20
+ def create_resized_image(output_datastream, size, format, quality=nil)
21
+ create_image(output_datastream, format, quality) do |xfrm|
22
+ xfrm.resize(size) if size.present?
26
23
  end
27
- output_ds.mimeType = new_mime_type(format)
24
+ output_datastream.mimeType = new_mime_type(format)
28
25
  end
29
26
 
30
27
  def create_image(output_datastream, format, quality=nil)
31
28
  xfrm = load_image_transformer
32
29
  yield(xfrm) if block_given?
33
- output_datastream.content = if quality
34
- xfrm.to_blob { self.quality = quality; self.format = format.upcase }
35
- else
36
- xfrm.to_blob { self.format = format.upcase }
37
- end
30
+ xfrm.format(format)
31
+ xfrm.quality(quality.to_s) if quality
32
+ write_image(output_datastream, xfrm)
33
+ end
34
+
35
+ def write_image(output_datastream, xfrm)
36
+ stream = StringIO.new
37
+ xfrm.write(stream)
38
+ stream.rewind
39
+ output_datastream.content = stream
38
40
  end
39
41
 
40
42
  # Override this method if you want a different transformer, or need to load the
41
43
  # raw image from a different source (e.g. external datastream)
42
44
  def load_image_transformer
43
- Magick::ImageList.new.tap do |xformer|
44
- xformer.from_blob(source_datastream.content)
45
- end
45
+ MiniMagick::Image.read(source_datastream.content)
46
46
  end
47
47
  end
48
48
  end
@@ -28,7 +28,7 @@ module Hydra
28
28
  def codecs(format)
29
29
  case format
30
30
  when 'mp4'
31
- "-vcodec libx264 -acodec libfaac"
31
+ "-vcodec libx264 -acodec libfdk_aac"
32
32
  when 'webm'
33
33
  "-acodec libvorbis"
34
34
  else
Binary file
Binary file
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ module Hydra::Derivatives
4
+ describe ExtractMetadata do
5
+ let(:class_with_metadata_extraction) {
6
+ Class.new do
7
+ attr_reader :content, :mimeType, :pid, :dsVersionID
8
+ def initialize(options = {})
9
+ @content = options.fetch(:content, '')
10
+ @mimeType = options.fetch(:mime_type, nil)
11
+ @pid = options.fetch(:pid, 'pid-123')
12
+ @dsVersionID = options.fetch(:dsVersionID, 'version-id-1')
13
+ end
14
+ include Hydra::Derivatives::ExtractMetadata
15
+ def has_content?; content.present?; end
16
+ end
17
+ }
18
+ let(:initialization_options) { {content: 'abc', mime_type: 'text/plain'} }
19
+ subject { class_with_metadata_extraction.new(initialization_options) }
20
+
21
+ context '#extract_metadata' do
22
+ context 'without content' do
23
+ let(:initialization_options) { {content: '', mime_type: 'text/plain'} }
24
+ its(:extract_metadata) { should be_nil}
25
+ end
26
+
27
+ context 'with content' do
28
+ let(:mime_type) { 'image/jpeg' }
29
+ its(:extract_metadata) { should match("<identity format=\"Plain text\" mimetype=\"text/plain\"")}
30
+ end
31
+ end
32
+ end
33
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,3 +7,4 @@ require 'hydra/derivatives'
7
7
  RSpec.configure do |config|
8
8
  end
9
9
 
10
+ $in_travis = !ENV['TRAVIS'].nil? && ENV['TRAVIS'] == 'true'
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ class ExtractThing < ActiveFedora::Datastream
4
+ include Hydra::Derivatives::ExtractMetadata
5
+ attr_accessor :pid
6
+ end
7
+
8
+ describe Hydra::Derivatives::ExtractMetadata, :unless => $in_travis do
9
+ let(:subject) { ExtractThing.new }
10
+ let(:attachment) { File.open(File.expand_path('../../fixtures/world.png', __FILE__))}
11
+
12
+ describe "Image Content" do
13
+ it "should get a mime type" do
14
+ subject.content = attachment
15
+ subject.pid = "abc"
16
+ xml = subject.extract_metadata
17
+ doc = Nokogiri::HTML(xml)
18
+ identity = doc.xpath('//identity').first
19
+ identity.attr('mimetype').should == 'image/png'
20
+ end
21
+ end
22
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "Transcoder" do
4
- before do
4
+ before(:all) do
5
5
  class ContentDatastream < ActiveFedora::Datastream
6
6
  include Hydra::Derivatives::ExtractMetadata
7
7
  end
@@ -14,7 +14,7 @@ describe "Transcoder" do
14
14
  delegate :mime_type, :to => :characterization, :unique => true
15
15
  has_file_datastream 'content', type: ContentDatastream
16
16
 
17
- makes_derivatives do |obj|
17
+ makes_derivatives do |obj|
18
18
  case obj.mime_type
19
19
  when 'application/pdf'
20
20
  obj.transform_datastream :content, { :thumb => "100x100>" }
@@ -25,10 +25,15 @@ describe "Transcoder" do
25
25
  when 'image/png', 'image/jpg'
26
26
  obj.transform_datastream :content, { :medium => "300x300>", :thumb => "100x100>", :access => {format: 'jpg', datastream: 'access'} }
27
27
  when 'application/vnd.ms-powerpoint'
28
- obj.transform_datastream :content, { :access => { :format=>'pdf' } }, processor: 'document'
28
+ obj.transform_datastream :content, { :preservation=> {:format => 'pptx'}, :access => { :format=>'pdf' } }, processor: 'document'
29
29
  when 'text/rtf'
30
30
  obj.transform_datastream :content, { :preservation=> {:format => 'odf' }, :access => { :format=>'pdf' } }, processor: 'document'
31
+ when 'application/msword'
32
+ obj.transform_datastream :content, { :access => { :format=>'pdf' }, :preservation=> {:format => 'docx' } }, processor: 'document'
33
+ when 'application/vnd.ms-excel'
34
+ obj.transform_datastream :content, { :access => { :format=>'pdf' }, :preservation=> {:format => 'xslx' } }, processor: 'document'
31
35
  end
36
+
32
37
  end
33
38
 
34
39
  makes_derivatives :generate_special_derivatives
@@ -41,6 +46,12 @@ describe "Transcoder" do
41
46
 
42
47
  end
43
48
  end
49
+
50
+ after(:all) do
51
+ GenericFile.all.each(&:destroy)
52
+ Object.send(:remove_const, :GenericFile);
53
+ Object.send(:remove_const, :ContentDatastream);
54
+ end
44
55
 
45
56
  describe "with an attached image" do
46
57
  let(:attachment) { File.open(File.expand_path('../../fixtures/world.png', __FILE__))}
@@ -89,7 +100,7 @@ describe "Transcoder" do
89
100
  let(:file) { GenericFile.new(mime_type: 'audio/wav').tap { |t| t.content.content = attachment; t.content.mimeType = 'audio/vnd.wav'; t.save } }
90
101
 
91
102
  it "should transcode" do
92
- expect(logger).to receive(:warn).with("Unable to find a registered mime type for \"audio/vnd.wav\" on #{file.pid}").at_least(1).times
103
+ expect(logger).to receive(:warn).with("Unable to find a registered mime type for \"audio/vnd.wav\" on #{file.pid}").twice
93
104
  file.create_derivatives
94
105
  file.datastreams['content_mp3'].should have_content
95
106
  file.datastreams['content_mp3'].mimeType.should == 'audio/mpeg'
@@ -131,6 +142,8 @@ describe "Transcoder" do
131
142
  file.create_derivatives
132
143
  file.datastreams['content_access'].should have_content
133
144
  file.datastreams['content_access'].mimeType.should == 'application/pdf'
145
+ file.datastreams['content_preservation'].should have_content
146
+ file.datastreams['content_preservation'].mimeType.should == 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
134
147
  end
135
148
  end
136
149
 
@@ -146,4 +159,32 @@ describe "Transcoder" do
146
159
  file.datastreams['content_preservation'].mimeType.should == 'application/vnd.oasis.opendocument.text'
147
160
  end
148
161
  end
162
+
163
+ describe "with an attached word doc format", unless: ENV['TRAVIS'] == 'true' do
164
+ let(:attachment) { File.open(File.expand_path('../../fixtures/test.doc', __FILE__))}
165
+ let(:file) { GenericFile.new(mime_type: 'application/msword').tap { |t| t.content.content = attachment; t.save } }
166
+
167
+ it "should transcode" do
168
+ file.create_derivatives
169
+ file.datastreams['content_access'].should have_content
170
+ file.datastreams['content_access'].mimeType.should == 'application/pdf'
171
+ file.datastreams['content_preservation'].should have_content
172
+ file.datastreams['content_preservation'].mimeType.should == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
173
+ end
174
+ end
175
+
176
+ describe "with an attached excel format", unless: ENV['TRAVIS'] == 'true' do
177
+ let(:attachment) { File.open(File.expand_path('../../fixtures/test.xls', __FILE__))}
178
+ let(:file) { GenericFile.new(mime_type: 'application/vnd.ms-excel').tap { |t| t.content.content = attachment; t.save } }
179
+
180
+ it "should transcode" do
181
+ file.create_derivatives
182
+ puts file.datastreams.inspect
183
+ file.datastreams['content_access'].should have_content
184
+ file.datastreams['content_access'].mimeType.should == 'application/pdf'
185
+ file.datastreams['content_preservation'].should have_content
186
+ file.datastreams['content_preservation'].mimeType.should == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
187
+ end
188
+ end
189
+
149
190
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-derivatives
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Justin Coyne
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-07-25 00:00:00.000000000 Z
12
+ date: 2013-10-10 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,78 +30,105 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: jettywrapper
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: rspec
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - '>='
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '0'
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - '>='
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '0'
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: active-fedora
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - '>='
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: '0'
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - '>='
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  - !ruby/object:Gem::Dependency
84
- name: rmagick
95
+ name: hydra-file_characterization
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :runtime
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: mini_magick
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
95
124
  - !ruby/object:Gem::Version
96
125
  version: '0'
97
126
  - !ruby/object:Gem::Dependency
98
127
  name: activesupport
99
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
100
130
  requirements:
101
- - - '>='
131
+ - - ! '>='
102
132
  - !ruby/object:Gem::Version
103
133
  version: 3.2.13
104
134
  - - <
@@ -107,8 +137,9 @@ dependencies:
107
137
  type: :runtime
108
138
  prerelease: false
109
139
  version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
110
141
  requirements:
111
- - - '>='
142
+ - - ! '>='
112
143
  - !ruby/object:Gem::Version
113
144
  version: 3.2.13
114
145
  - - <
@@ -148,46 +179,55 @@ files:
148
179
  - spec/fixtures/countdown.avi
149
180
  - spec/fixtures/piano_note.wav
150
181
  - spec/fixtures/sample.rtf
182
+ - spec/fixtures/test.doc
151
183
  - spec/fixtures/test.pdf
184
+ - spec/fixtures/test.xls
152
185
  - spec/fixtures/world.png
186
+ - spec/lib/hydra/derivatives/extract_metadata_spec.rb
153
187
  - spec/spec_helper.rb
154
188
  - spec/units/config_spec.rb
189
+ - spec/units/extract_spec.rb
155
190
  - spec/units/image_spec.rb
156
191
  - spec/units/transcoding_spec.rb
157
192
  - spec/units/video_spec.rb
158
193
  homepage: https://github.com/projecthydra/hydra-derivatives
159
194
  licenses:
160
195
  - APACHE2
161
- metadata: {}
162
196
  post_install_message:
163
197
  rdoc_options: []
164
198
  require_paths:
165
199
  - lib
166
200
  required_ruby_version: !ruby/object:Gem::Requirement
201
+ none: false
167
202
  requirements:
168
- - - '>='
203
+ - - ! '>='
169
204
  - !ruby/object:Gem::Version
170
205
  version: '0'
171
206
  required_rubygems_version: !ruby/object:Gem::Requirement
207
+ none: false
172
208
  requirements:
173
- - - '>='
209
+ - - ! '>='
174
210
  - !ruby/object:Gem::Version
175
211
  version: '0'
176
212
  requirements: []
177
213
  rubyforge_project:
178
- rubygems_version: 2.0.5
214
+ rubygems_version: 1.8.25
179
215
  signing_key:
180
- specification_version: 4
216
+ specification_version: 3
181
217
  summary: Derivative generation plugin for hydra
182
218
  test_files:
183
219
  - spec/fixtures/FlashPix.ppt
184
220
  - spec/fixtures/countdown.avi
185
221
  - spec/fixtures/piano_note.wav
186
222
  - spec/fixtures/sample.rtf
223
+ - spec/fixtures/test.doc
187
224
  - spec/fixtures/test.pdf
225
+ - spec/fixtures/test.xls
188
226
  - spec/fixtures/world.png
227
+ - spec/lib/hydra/derivatives/extract_metadata_spec.rb
189
228
  - spec/spec_helper.rb
190
229
  - spec/units/config_spec.rb
230
+ - spec/units/extract_spec.rb
191
231
  - spec/units/image_spec.rb
192
232
  - spec/units/transcoding_spec.rb
193
233
  - spec/units/video_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 168e645949c93b6ed1981c164f86969d71024cea
4
- data.tar.gz: cecd38bd8f89d9de5d6e709cd3a409ee1792f4c7
5
- SHA512:
6
- metadata.gz: 5ccf06b680a87e68f1375d662439edaa451560bd3895c0262032fd8357b7d4f235b2ebf142ac5d2eb78d2aeeac3da2f337cf04473b329ce0e3063a329c4f46fd
7
- data.tar.gz: dc693c6c09dde061948bccae85c67576cea915e668d5b7d7bb5e9ca9544950ba9678e087df0b68360e4be5d90e1b9ed60c96c1c7276df37e73dd80c70ea9900a