assembly-objectfile 1.6.8 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +3 -1
- data/lib/assembly-objectfile/content_metadata.rb +11 -7
- data/lib/assembly-objectfile/version.rb +1 -1
- data/spec/content_metadata_spec.rb +17 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 525c02a47a00911d384772353e49b34f0e730f9a
|
4
|
+
data.tar.gz: 73656cb1be5cdbab3275bbaab9883b1a79598bc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa7a37c0e0705c51de15c0d8b9500533e845eb9cb953acee0f88c63e3302445c1939cd13492c53c30c1aeff8776284d3baefe4c5ff5ff15a48a6f8e8f6c2ad8e
|
7
|
+
data.tar.gz: 23fe849cf5e4a54f939ecde806dd31db990c75ca5e3c4e159451db1c00276772f3803ba13325285dfe1d9859e32404ae0877cedd411d606b103ccbc71fdc5a32
|
data/README.rdoc
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
{<img src="https://travis-ci.org/sul-dlss/assembly-objectfile.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/sul-dlss/assembly-objectfile]
|
2
|
+
|
1
3
|
= Assembly-ObjectFile Gem
|
2
4
|
|
3
5
|
==Overview
|
@@ -67,6 +69,7 @@ content type specific operations (such as jp2 generation).
|
|
67
69
|
- 1.6.3 Integrate with TravisCI
|
68
70
|
- 1.6.4 Try and solve UTF-8 encoding issues with exif data in images
|
69
71
|
- 1.6.5 Just use mime-types extension by default to compute mimetype to prevent calling to shell all the time (and avoid potential memory problems). A new method allows you to call out to shell if you really want to.
|
72
|
+
- 1.7.0 Support the `role` attribute on files
|
70
73
|
|
71
74
|
==Usage
|
72
75
|
|
@@ -108,4 +111,3 @@ To keep a local server running with up to date code documentation that you can v
|
|
108
111
|
|
109
112
|
Mac users:
|
110
113
|
brew install exiftool
|
111
|
-
|
@@ -2,9 +2,11 @@ require 'nokogiri'
|
|
2
2
|
|
3
3
|
module Assembly
|
4
4
|
|
5
|
-
SPECIAL_DPG_FOLDERS=['31','44','50'] # these special dpg folders will force any files contained in them into their own resources, regardless of filenaming convention
|
5
|
+
SPECIAL_DPG_FOLDERS = ['31', '44', '50'] # these special dpg folders will force any files contained in them into their own resources, regardless of filenaming convention
|
6
6
|
# these are used when :bundle=>:dpg only
|
7
|
-
|
7
|
+
|
8
|
+
DEPRECATED_STYLES = [:book_with_pdf, :book_as_image]
|
9
|
+
|
8
10
|
# This class generates content metadata for image files
|
9
11
|
class ContentMetadata
|
10
12
|
|
@@ -20,8 +22,8 @@ module Assembly
|
|
20
22
|
# :simple_image (default), contentMetadata type="image", resource type="image"
|
21
23
|
# :file, contentMetadata type="file", resource type="file"
|
22
24
|
# :simple_book, contentMetadata type="book", resource type="page", but any resource which has file(s) other than an image, and also contains no images at all, will be resource type="object"
|
23
|
-
# :book_with_pdf, contentMetadata type="book", resource type="page", but any resource which has any file(s) other than an image will be resource type="object"
|
24
|
-
# :book_as_image, as simple_book, but with contentMetadata type="book", resource type="image" (same rule applies for resources with non images)
|
25
|
+
# :book_with_pdf, contentMetadata type="book", resource type="page", but any resource which has any file(s) other than an image will be resource type="object" - NOTE: THIS IS DEPRECATED
|
26
|
+
# :book_as_image, as simple_book, but with contentMetadata type="book", resource type="image" (same rule applies for resources with non images) - NOTE: THIS IS DEPRECATED
|
25
27
|
# :map, like simple_image, but with contentMetadata type="map", resource type="image"
|
26
28
|
# :bundle = optional - a symbol containing the method of bundling files into resources, allowed values are
|
27
29
|
# :default = all files get their own resources (default)
|
@@ -29,8 +31,8 @@ module Assembly
|
|
29
31
|
# :dpg = files representing the same image but of different mimetype that use the SULAIR DPG filenaming standard (00 vs 05) get bundled together in a single resource
|
30
32
|
# :prebundlded = this option requires you to prebundled the files passed in as an array of arrays, indicating how files are bundlded into resources; this is the most flexible option since it gives you full control
|
31
33
|
# :add_exif = optional - a boolean to indicate if exif data should be added (mimetype, filesize, image height/width, etc.) to each file, defaults to false and is not required if project goes through assembly
|
32
|
-
# :add_file_attributes = optional - a boolean to indicate if publish/preserve/shelve attributes should be added using defaults or by supplied override by mime/type, defaults to false and is not required if project goes through assembly
|
33
|
-
# :file_attributes = optional - a hash of file attributes by mimetype to use instead of defaults, only used if add_file_attributes is also true,
|
34
|
+
# :add_file_attributes = optional - a boolean to indicate if publish/preserve/shelve/role attributes should be added using defaults or by supplied override by mime/type, defaults to false and is not required if project goes through assembly
|
35
|
+
# :file_attributes = optional - a hash of file attributes by mimetype to use instead of defaults, only used if add_file_attributes is also true,
|
34
36
|
# If a mimetype match is not found in your hash, the default is used (either your supplied default or the gems).
|
35
37
|
# e.g. {'default'=>{:preserve=>'yes',:shelve=>'yes',:publish=>'yes'},'image/tif'=>{:preserve=>'yes',:shelve=>'no',:publish=>'no'},'application/pdf'=>{:preserve=>'yes',:shelve=>'yes',:publish=>'yes'}}
|
36
38
|
# :include_root_xml = optional - a boolean to indicate if the contentMetadata returned includes a root <?xml version="1.0"?> tag, defaults to true
|
@@ -41,7 +43,7 @@ module Assembly
|
|
41
43
|
# The default is false. If set to true, will override the "preserve_common_paths" parameter.
|
42
44
|
# :auto_labels = optional - Will add automated resource labels (e.g. "File 1") when labels are not provided by the user. The default is true.
|
43
45
|
# Example:
|
44
|
-
# Assembly::
|
46
|
+
# Assembly::ContentMetadata.create_content_metadata(:druid=>'druid:nx288wh8889',:style=>:simple_image,:objects=>object_files,:add_file_attributes=>false)
|
45
47
|
def self.create_content_metadata(params={})
|
46
48
|
|
47
49
|
druid=params[:druid]
|
@@ -93,6 +95,7 @@ module Assembly
|
|
93
95
|
raise "Supplied style not valid"
|
94
96
|
end
|
95
97
|
|
98
|
+
puts "WARNING - the style #{style} is now deprecated and should not be used." if DEPRECATED_STYLES.include? style
|
96
99
|
|
97
100
|
# determine how many resources to create
|
98
101
|
# setup an array of arrays, where the first array is the number of resources, and the second array is the object files containined in that resource
|
@@ -188,6 +191,7 @@ module Assembly
|
|
188
191
|
:preserve => file_attributes_hash[:preserve],
|
189
192
|
:publish => file_attributes_hash[:publish],
|
190
193
|
:shelve => file_attributes_hash[:shelve],
|
194
|
+
:role => file_attributes_hash[:role],
|
191
195
|
})
|
192
196
|
end
|
193
197
|
|
@@ -551,6 +551,23 @@ describe Assembly::ContentMetadata do
|
|
551
551
|
end
|
552
552
|
end
|
553
553
|
|
554
|
+
it "should generate role attributes for content metadata for a tif" do
|
555
|
+
obj1=Assembly::ObjectFile.new(TEST_TIF_INPUT_FILE)
|
556
|
+
obj1.file_attributes={:publish=>'no',:preserve=>'no',:shelve=>'no',:role=>'master-role'}
|
557
|
+
objects=[obj1]
|
558
|
+
result = Assembly::ContentMetadata.create_content_metadata(:druid=>TEST_DRUID,:add_exif=>false,:add_file_attributes=>true,:objects=>objects)
|
559
|
+
expect(result.class).to be String
|
560
|
+
xml = Nokogiri::XML(result)
|
561
|
+
expect(xml.errors.size).to be 0
|
562
|
+
expect(xml.xpath("//contentMetadata")[0].attributes['type'].value).to eq("image")
|
563
|
+
expect(xml.xpath("//resource").length).to be 1
|
564
|
+
expect(xml.xpath("//resource/file").length).to be 1
|
565
|
+
expect(xml.xpath("//resource/file").length).to be 1
|
566
|
+
expect(xml.xpath("//resource/file")[0].attributes['role'].value).to eq("master-role")
|
567
|
+
end
|
568
|
+
|
569
|
+
|
570
|
+
|
554
571
|
it "should generate content metadata even when no objects are passed in" do
|
555
572
|
objects=[]
|
556
573
|
result = Assembly::ContentMetadata.create_content_metadata(:druid=>TEST_DRUID,:bundle=>:prebundled,:style=>:file,:objects=>objects)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assembly-objectfile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Mangiafico
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2018-02-08 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: mini_exiftool
|
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
193
|
version: '0'
|
194
194
|
requirements: []
|
195
195
|
rubyforge_project: assembly-objectfile
|
196
|
-
rubygems_version: 2.6.
|
196
|
+
rubygems_version: 2.6.11
|
197
197
|
signing_key:
|
198
198
|
specification_version: 4
|
199
199
|
summary: Ruby immplementation of file services needed to prepare objects to be accessioned
|
@@ -235,4 +235,3 @@ test_files:
|
|
235
235
|
- spec/test_data/input/test2.jp2
|
236
236
|
- spec/test_data/input/test2.tif
|
237
237
|
- spec/test_data/input/test_no_color_profile.tif
|
238
|
-
has_rdoc:
|