hydra-file_characterization 0.1.3 → 0.2.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
  SHA1:
3
- metadata.gz: 2274d4a30e9297d0a50618e43cf37a32b61c636b
4
- data.tar.gz: 95f2b5c7c203375348c299ace5ffa8a70dfc8138
3
+ metadata.gz: 6aa0e27917882868e5356621f163eda7e6ab56a6
4
+ data.tar.gz: d3114a797679bcd25bc29f19ae31f70659828016
5
5
  SHA512:
6
- metadata.gz: 46f13a52337a8251753768fbd6de683ebd9d0d61242a3a4e5600d70f388ddf04fb173eadc9489c49799d2836f755e4d92b11e6a0e43b4d0a2bc54a4cbd2b1ce8
7
- data.tar.gz: 220e1e5c34ed0cf3286d8e7efa47146306d03ebc3d1cff491e177d5fc31ca48a645995a45c313d0e5d931d5e8bcb15a10688ce60fa1bb4349ce536ef3a7a9a00
6
+ metadata.gz: 88e44705e2cb908b5732a3f220e90a2544b909834bbe3f96b07ea82c142b31cffaebd38d068493ad84cb0887fe6eec76aeff11e9fd874c116a24fa9295729e3c
7
+ data.tar.gz: 6932b2860c71bfb3171f0a952021fe0935121b880ea7fcd3aff5b4c5dd47e551143773f154be0e852f5b637f1f22e3a3a1d1949eaea392b38984793017eb7bb2
data/README.md CHANGED
@@ -6,6 +6,28 @@ Hydra::FileCharacterization as (extracted from Sufia and Hydra::Derivatives)
6
6
 
7
7
  To provide a wrapper for file characterization
8
8
 
9
+ ## How To Use
10
+
11
+ If you are using Rails add the following to an initializer (./config/initializers/hydra-file_characterization_config.rb):
12
+
13
+ Hydra::FileCharacterization.configure do |config|
14
+ config.tool_path(:fits, '/path/to/fits')
15
+ end
16
+
17
+ To use the characterizer:
18
+
19
+ characterization_xml = Hydra.characterize(file.read, file.basename, :fits)
20
+
21
+ # This does not work at this point
22
+ fits_xml, ffprobe_xml = Hydra.characterize(file.read, file.basename, :fits, :ffprobe)
23
+
24
+ * Why `file.read`? To highlight that we want a string. In the case of ActiveFedora, we have a StringIO instead of a file.
25
+ * Why `file.basename`? In the case of Fits, the characterization takes cues from the extension name.
26
+
27
+ ## Registering New Characterizers
28
+
29
+ This is possible by adding a characterizer to the `Hydra::FileCharacterization::Characterizers`' namespace.
30
+
9
31
  ## To Consider
10
32
 
11
33
  How others are using the extract_metadata method
@@ -22,11 +44,3 @@ How others are using the extract_metadata method
22
44
  - Allow characterization services to be chained together
23
45
  - ~~This would involve renaming the Characterizer to something else (i.e. Characterizers::Fits)~~
24
46
  - Provide an ActiveFedora Datastream that maps the raw XML stream to a datastructure
25
-
26
- ## How to configure path to fits tool
27
-
28
- If you are using Rails add the following to an initializer (./config/initializers/hydra-file_characterization_config.rb):
29
-
30
- Hydra::FileCharacterization.configure do |config|
31
- config.tool_path(:fits, '/path/to/fits')
32
- end
@@ -35,23 +35,20 @@ module Hydra
35
35
 
36
36
  module FileCharacterization
37
37
 
38
- class Configuration
39
- def configure
40
- yield(self)
41
- end
38
+ class << self
39
+ attr_accessor :configuration
40
+ end
41
+
42
+ def self.configure
43
+ self.configuration ||= Configuration.new
44
+ yield(configuration)
45
+ end
42
46
 
47
+ class Configuration
43
48
  def tool_path(tool_name, tool_path)
44
49
  Hydra::FileCharacterization.characterizer(tool_name).tool_path = tool_path
45
50
  end
46
51
  end
47
52
 
48
- module_function
49
- def configuration
50
- @configuration ||= Configuration.new
51
- end
52
-
53
- def configure(&block)
54
- configuration.configure(&block)
55
- end
56
53
  end
57
54
  end
@@ -15,7 +15,7 @@ module Hydra::FileCharacterization
15
15
  def characterizer_name_from(tool_name)
16
16
  tool_name.to_s.gsub(/(?:^|_)([a-z])/) { $1.upcase }
17
17
  end
18
-
18
+
19
19
  def characterize_with(tool_name, file_path)
20
20
  tool_obj = characterizer(tool_name).new(file_path)
21
21
  tool_obj.call
@@ -24,3 +24,4 @@ module Hydra::FileCharacterization
24
24
  end
25
25
 
26
26
  require 'hydra/file_characterization/characterizers/fits'
27
+ require 'hydra/file_characterization/characterizers/ffprobe'
@@ -0,0 +1,13 @@
1
+ require 'hydra/file_characterization/exceptions'
2
+ require 'hydra/file_characterization/characterizer'
3
+
4
+ module Hydra::FileCharacterization::Characterizers
5
+ class Ffprobe < Hydra::FileCharacterization::Characterizer
6
+
7
+ protected
8
+ def command
9
+ "#{tool_path} -i \"#{filename}\" -print_format xml -show_streams -v quiet"
10
+ end
11
+
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module FileCharacterization
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ require 'hydra/file_characterization/characterizers/ffprobe'
3
+
4
+ module Hydra::FileCharacterization::Characterizers
5
+
6
+ describe Ffprobe do
7
+
8
+ subject { Ffprobe.new(filename) }
9
+
10
+ describe 'invalidFile' do
11
+ let(:filename) { fixture_file('nofile.pdf') }
12
+ it "should raise an error if the path does not contain the file" do
13
+ expect {subject.call}.to raise_error(Hydra::FileCharacterization::FileNotFoundError)
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -10,5 +10,10 @@ module Hydra::FileCharacterization
10
10
  it { should eq(Characterizers::Fits) }
11
11
  end
12
12
 
13
+ describe 'with :ffprobe tool_name' do
14
+ let(:tool_name) { :ffprobe }
15
+ it { should eq(Characterizers::Ffprobe) }
16
+ end
17
+
13
18
  end
14
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-file_characterization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Treacy
@@ -91,6 +91,7 @@ files:
91
91
  - lib/hydra/file_characterization.rb
92
92
  - lib/hydra/file_characterization/characterizer.rb
93
93
  - lib/hydra/file_characterization/characterizers.rb
94
+ - lib/hydra/file_characterization/characterizers/ffprobe.rb
94
95
  - lib/hydra/file_characterization/characterizers/fits.rb
95
96
  - lib/hydra/file_characterization/exceptions.rb
96
97
  - lib/hydra/file_characterization/to_temp_file.rb
@@ -101,6 +102,7 @@ files:
101
102
  - spec/fixtures/brendan_behan.jpeg.fits.xml
102
103
  - spec/fixtures/brendan_broken.dxxd
103
104
  - spec/fixtures/brendan_broken.dxxd.fits.xml
105
+ - spec/lib/hydra/file_characterization/characterizers/ffprobe_spec.rb
104
106
  - spec/lib/hydra/file_characterization/characterizers/fits_spec.rb
105
107
  - spec/lib/hydra/file_characterization/characterizers_spec.rb
106
108
  - spec/lib/hydra/file_characterization/to_temp_file_spec.rb
@@ -137,6 +139,7 @@ test_files:
137
139
  - spec/fixtures/brendan_behan.jpeg.fits.xml
138
140
  - spec/fixtures/brendan_broken.dxxd
139
141
  - spec/fixtures/brendan_broken.dxxd.fits.xml
142
+ - spec/lib/hydra/file_characterization/characterizers/ffprobe_spec.rb
140
143
  - spec/lib/hydra/file_characterization/characterizers/fits_spec.rb
141
144
  - spec/lib/hydra/file_characterization/characterizers_spec.rb
142
145
  - spec/lib/hydra/file_characterization/to_temp_file_spec.rb