dor-services 6.4.0 → 6.5.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 +4 -4
- data/lib/dor/services/technical_metadata_service.rb +24 -2
- data/lib/dor/utils/sdr_client.rb +6 -0
- data/lib/dor/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8fda5b9a8dcdb85f290832205f6048a235e28e4ef6cf7deab312bcd40ec98da
|
4
|
+
data.tar.gz: b2e10373a24d6c531cd36fb72fa3ebc31d8e52354d5c1bd39615958bd08386f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17d7c18682c5b8acc1730f3e293a2ba4643b5970b0a91cc3e11796006c3d204e408eb5ee49e243d29f0b44ba412667efdf3b9377cbf23b082da9e3a193b49b10
|
7
|
+
data.tar.gz: 9ee4653efdfe1fb63603e0311362562f4f09a1b965c1e4e92a81009d084cadc10d41e46f29543605f020133f75dea5fd79698daa122c5fbdd2c34e853949b68b
|
@@ -6,6 +6,13 @@ require 'jhove_service'
|
|
6
6
|
require 'dor-services'
|
7
7
|
|
8
8
|
module Dor
|
9
|
+
# Extracts technical metadata from files using JHOVE
|
10
|
+
# If this is a new version it gets the old technicalMetadata datastream by
|
11
|
+
# making an API call to sdr-services-app (via dor-services-app) and
|
12
|
+
# only overwrites/adds parts for the files that were changed or added.
|
13
|
+
# This allows us to avoid re-staging files that have not changed.
|
14
|
+
# Switching to a more granular data model that has file metadata separate from
|
15
|
+
# the Work metadata will allow us to simplify this greatly.
|
9
16
|
class TechnicalMetadataService
|
10
17
|
# @param [Dor::Item] dor_item The DOR item being processed by the technical metadata robot
|
11
18
|
# @return [Boolean] True if technical metadata is correctly added or updated
|
@@ -45,6 +52,7 @@ module Dor
|
|
45
52
|
end
|
46
53
|
end
|
47
54
|
end
|
55
|
+
private_class_method :test_jhove_service
|
48
56
|
|
49
57
|
# @param [Dor::Item] dor_item The DOR item being processed by the technical metadata robot
|
50
58
|
# @return [FileGroupDifference] The differences between two versions of a group of files
|
@@ -52,21 +60,26 @@ module Dor
|
|
52
60
|
return Moab::FileGroupDifference.new if dor_item.contentMetadata.nil?
|
53
61
|
raise Dor::ParameterError, 'Missing Dor::Config.stacks.local_workspace_root' if Config.stacks.local_workspace_root.nil?
|
54
62
|
|
55
|
-
|
63
|
+
client = Dor::Services::Client.object(dor_item.pid).sdr
|
64
|
+
current_content = dor_item.contentMetadata.content
|
65
|
+
inventory_diff = client.content_diff(current_content: current_content)
|
56
66
|
inventory_diff.group_difference('content')
|
57
67
|
end
|
68
|
+
private_class_method :get_content_group_diff
|
58
69
|
|
59
70
|
# @param [FileGroupDifference] content_group_diff
|
60
71
|
# @return [Hash<Symbol,Array>] Sets of filenames grouped by change type for use in performing file or metadata operations
|
61
72
|
def self.get_file_deltas(content_group_diff)
|
62
73
|
content_group_diff.file_deltas
|
63
74
|
end
|
75
|
+
private_class_method :get_file_deltas
|
64
76
|
|
65
77
|
# @param [Hash<Symbol,Array>] deltas Sets of filenames grouped by change type for use in performing file or metadata operations
|
66
78
|
# @return [Array<String>] The list of filenames for files that are either added or modifed since the previous version
|
67
79
|
def self.get_new_files(deltas)
|
68
80
|
deltas[:added] + deltas[:modified]
|
69
81
|
end
|
82
|
+
private_class_method :get_new_files
|
70
83
|
|
71
84
|
# @param [Dor::Item] dor_item The DOR item being processed by the technical metadata robot
|
72
85
|
# @return [String] The technicalMetadata datastream from the previous version of the digital object
|
@@ -76,6 +89,7 @@ module Dor
|
|
76
89
|
|
77
90
|
get_dor_technical_metadata(dor_item)
|
78
91
|
end
|
92
|
+
private_class_method :get_old_technical_metadata
|
79
93
|
|
80
94
|
# @param [String] druid The identifier of the digital object being processed by the technical metadata robot
|
81
95
|
# @return [String] The technicalMetadata datastream from the previous version of the digital object (fetched from SDR storage)
|
@@ -87,6 +101,7 @@ module Dor
|
|
87
101
|
|
88
102
|
nil
|
89
103
|
end
|
104
|
+
private_class_method :get_sdr_technical_metadata
|
90
105
|
|
91
106
|
# @param [Dor::Item] dor_item The DOR item being processed by the technical metadata robot
|
92
107
|
# @return [String] The technicalMetadata datastream from the previous version of the digital object (fetched from DOR fedora).
|
@@ -101,13 +116,15 @@ module Dor
|
|
101
116
|
|
102
117
|
nil
|
103
118
|
end
|
119
|
+
private_class_method :get_dor_technical_metadata
|
104
120
|
|
105
121
|
# @param [String] druid The identifier of the digital object being processed by the technical metadata robot
|
106
122
|
# @param [String] dsname The identifier of the metadata datastream
|
107
123
|
# @return [String] The datastream contents from the previous version of the digital object (fetched from SDR storage)
|
108
124
|
def self.get_sdr_metadata(druid, dsname)
|
109
|
-
|
125
|
+
Dor::Services::Client.object(druid).sdr.metadata(datastream: dsname)
|
110
126
|
end
|
127
|
+
private_class_method :get_sdr_metadata
|
111
128
|
|
112
129
|
# @param [DruidTools::Druid] druid A wrapper class for the druid identifier. Used to generate paths
|
113
130
|
# @param [Array<String>] new_files The list of filenames for files that are either added or modifed since the previous version
|
@@ -125,6 +142,7 @@ module Dor
|
|
125
142
|
tech_md_file = jhove_service.create_technical_metadata(jhove_output_file)
|
126
143
|
IO.read(tech_md_file)
|
127
144
|
end
|
145
|
+
private_class_method :get_new_technical_metadata
|
128
146
|
|
129
147
|
# @param [Pathname] temp_dir The pathname of the temp folder in the object's workspace area
|
130
148
|
# @param [Object] new_files [Array<String>] The list of filenames for files that are either added or modifed since the previous version
|
@@ -134,6 +152,7 @@ module Dor
|
|
134
152
|
fileset_pathname.open('w') { |f| f.puts(new_files) }
|
135
153
|
fileset_pathname
|
136
154
|
end
|
155
|
+
private_class_method :write_fileset
|
137
156
|
|
138
157
|
# @param [String] old_techmd The technicalMetadata datastream from the previous version of the digital object
|
139
158
|
# @param [String] new_techmd The technicalMetadata datastream for the new files of the new digital object version
|
@@ -164,6 +183,7 @@ module Dor
|
|
164
183
|
end
|
165
184
|
merged_nodes
|
166
185
|
end
|
186
|
+
private_class_method :merge_file_nodes
|
167
187
|
|
168
188
|
# @param [String] technical_metadata A technicalMetadata datastream contents
|
169
189
|
# @return [Hash<String,Nokogiri::XML::Node>] The set of nodes from a technicalMetadata datastream, indexed by filename
|
@@ -191,6 +211,7 @@ module Dor
|
|
191
211
|
end
|
192
212
|
file_hash
|
193
213
|
end
|
214
|
+
private_class_method :get_file_nodes
|
194
215
|
|
195
216
|
# @param [String] druid The identifier of the digital object being processed by the technical metadata robot
|
196
217
|
# @param [Hash<String,Nokogiri::XML::Node>] merged_nodes The complete set of technicalMetadata nodes for the digital object, indexed by filename
|
@@ -206,5 +227,6 @@ module Dor
|
|
206
227
|
merged_nodes.keys.sort.each { |path| doc << merged_nodes[path] }
|
207
228
|
doc + '</technicalMetadata>'
|
208
229
|
end
|
230
|
+
private_class_method :build_technical_metadata
|
209
231
|
end
|
210
232
|
end
|
data/lib/dor/utils/sdr_client.rb
CHANGED
@@ -24,6 +24,9 @@ module Sdr
|
|
24
24
|
# @param [String] dsname The identifier of the metadata datastream
|
25
25
|
# @return [String] The datastream contents from the previous version of the digital object (fetched from SDR storage)
|
26
26
|
def get_sdr_metadata(druid, dsname)
|
27
|
+
Deprecation.warn(self, 'Sdr::Client.get_sdr_metadata is deprecated and will be removed in dor-services 7. ' \
|
28
|
+
'Use Dor::Services::Client.object(object_identifier).sdr.metadatra(datastream:) instead')
|
29
|
+
|
27
30
|
client["objects/#{druid}/metadata/#{dsname}.xml"].get
|
28
31
|
rescue RestClient::ResourceNotFound
|
29
32
|
nil
|
@@ -32,6 +35,9 @@ module Sdr
|
|
32
35
|
# @param [String] druid The object identifier
|
33
36
|
# @return [Moab::SignatureCatalog] the catalog of all files previously ingested
|
34
37
|
def get_signature_catalog(druid)
|
38
|
+
Deprecation.warn(self, 'Sdr::Client.get_signature_catalog is deprecated and will be removed in dor-services 7. ' \
|
39
|
+
'Use Dor::Services::Client.object(object_identifier).sdr.signature_catalog instead')
|
40
|
+
|
35
41
|
response = client["objects/#{druid}/manifest/signatureCatalog.xml"].get
|
36
42
|
Moab::SignatureCatalog.parse(response)
|
37
43
|
rescue RestClient::ResourceNotFound
|
data/lib/dor/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dor-services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Klein
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2019-02-
|
17
|
+
date: 2019-02-08 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: active-fedora
|
@@ -90,14 +90,14 @@ dependencies:
|
|
90
90
|
requirements:
|
91
91
|
- - "~>"
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: '1.
|
93
|
+
version: '1.5'
|
94
94
|
type: :runtime
|
95
95
|
prerelease: false
|
96
96
|
version_requirements: !ruby/object:Gem::Requirement
|
97
97
|
requirements:
|
98
98
|
- - "~>"
|
99
99
|
- !ruby/object:Gem::Version
|
100
|
-
version: '1.
|
100
|
+
version: '1.5'
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
102
|
name: equivalent-xml
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|