uc3-dmp-id 0.0.73 → 0.0.75
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/uc3-dmp-id/creator.rb +3 -3
- data/lib/uc3-dmp-id/deleter.rb +2 -1
- data/lib/uc3-dmp-id/finder.rb +89 -2
- data/lib/uc3-dmp-id/updater.rb +3 -2
- data/lib/uc3-dmp-id/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 445c7ef4554d72339624600ee7e43a0237564e4d45cb9393bd151719bfa5899d
|
4
|
+
data.tar.gz: 6f2c315e67f2cd63b570d7815f3bb7d04b9d134b523d17a4a05e293f1c46e7f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a3f4ef40605def448cc5128a595b6b2dbfc7a814a652744a63fc8ab386bc57effb4178fddcd78ae380119ed25607e9e2dd7066e89d95e4f5469a001e0e83f6b
|
7
|
+
data.tar.gz: '0917410c7c29936e689d192de8c8dff454fa7c15cf891370fa78446c2fb6effdbeb70465f626fb7c3835e2ee34a8a9b9bbdeda2c544ba83701f79eaa4e9cec2a'
|
data/lib/uc3-dmp-id/creator.rb
CHANGED
@@ -57,9 +57,9 @@ module Uc3DmpId
|
|
57
57
|
seed_id = json.fetch('dmp', {})['dmproadmap_external_system_identifier']
|
58
58
|
|
59
59
|
# If we are seeding already registered DMP IDs from the Provenance system, then return the original DMP ID
|
60
|
-
return seed_id if existing.fetch('type', 'other') == 'url' &&
|
61
|
-
|
62
|
-
|
60
|
+
return seed_id.gsub(%r{https?://}, '') if existing.fetch('type', 'other') == 'url' &&
|
61
|
+
!seed_id.nil? &&
|
62
|
+
provenance.fetch('seedingWithLiveDmpIds', false).to_s.downcase == 'true'
|
63
63
|
|
64
64
|
#Generate a new DMP ID
|
65
65
|
dmp_id = ''
|
data/lib/uc3-dmp-id/deleter.rb
CHANGED
@@ -43,7 +43,8 @@ puts resp.inspect
|
|
43
43
|
|
44
44
|
# Notify EZID about the removal
|
45
45
|
_post_process(json: dmp, debug: debug)
|
46
|
-
|
46
|
+
# Return the tombstoned record
|
47
|
+
Helper.cleanse_dmp_json(json: JSON.parse({ dmp: dmp }.to_json))
|
47
48
|
rescue Aws::Errors::ServiceError => e
|
48
49
|
Responder.log_error(source: source, message: e.message,
|
49
50
|
details: ([@provenance] << e.backtrace).flatten)
|
data/lib/uc3-dmp-id/finder.rb
CHANGED
@@ -9,15 +9,22 @@ module Uc3DmpId
|
|
9
9
|
class Finder
|
10
10
|
MSG_INVALID_ARGS = 'Expected JSON to be structured as `{ "dmp": { "PK": "value"} } OR \
|
11
11
|
{ "dmp": { "dmp_id": { "identifier": "value", "type": "value" } }`'
|
12
|
+
MSG_INVALID_OWNER_ID = 'Invalid :owner_orcid. Expected value to start with `https://orcid.org/`.'
|
13
|
+
MSG_INVALID_OWNER_ORG = 'Invalid :owner_org_ror. Expected value to start with `https://ror.org/`.'
|
14
|
+
MSG_INVALID_MOD_DATE = 'Invalid :modification_day. Expected value to be in the `YYYY-MM-DD` format.'
|
12
15
|
MSG_MISSING_PK = 'No PK was provided'
|
13
16
|
MSG_MISSING_PROV_ID = 'No Provenance identifier was provided. \
|
14
17
|
Expected: `{ "dmp_id": { "identifier": "value", "type": "value" }`'
|
15
18
|
|
19
|
+
|
16
20
|
class << self
|
17
21
|
# TODO: Replace this with ElasticSearch
|
18
|
-
def search_dmps(args:)
|
22
|
+
def search_dmps(args:, debug: debug)
|
23
|
+
return _by_owner(owner_org: args['owner_orcid']) unless args['owner_orcid'].nil?
|
24
|
+
return _by_owner_org(owner_org: args['owner_org_ror']) unless args['owner_org_ror'].nil?
|
25
|
+
return _by_mod_day(day: args['modification_day']) unless args['modification_day'].nil?
|
19
26
|
|
20
|
-
|
27
|
+
[]
|
21
28
|
end
|
22
29
|
# rubocop:enable Metrics/MethodLength
|
23
30
|
|
@@ -104,6 +111,86 @@ module Uc3DmpId
|
|
104
111
|
by_pk(p_key: dmp['dmp']['PK'], s_key: dmp['dmp']['SK'])
|
105
112
|
end
|
106
113
|
# rubocop:enable Metrics/AbcSize
|
114
|
+
|
115
|
+
private
|
116
|
+
|
117
|
+
# Fetch the DMP IDs for the specified owner's ORCID (the owner is the :dmphub_owner_id on the DMP ID record)
|
118
|
+
def _by_owner(owner_id:)
|
119
|
+
regex = %r{^([0-9A-Z]{4}-){3}[0-9A-Z]{4}$}
|
120
|
+
raise FinderError, MSG_INVALID_OWNER_ID if owner_id.nil? || (owner_id.to_s.downcase =~ regex).nil?
|
121
|
+
|
122
|
+
args = {
|
123
|
+
index_name: 'dmphub_owner_id_gsi',
|
124
|
+
key_conditions: {
|
125
|
+
dmphub_owner_id: {
|
126
|
+
attribute_value_list: [
|
127
|
+
"http://orcid.org/#{owner_id.to_s.downcase}",
|
128
|
+
"https://orcid.org/#{owner_id.to_s.downcase}"
|
129
|
+
],
|
130
|
+
comparison_operator: 'EQ'
|
131
|
+
}
|
132
|
+
},
|
133
|
+
filter_expression: 'SK = :version',
|
134
|
+
expression_attribute_values: { ':version': Helper::DMP_LATEST_VERSION }
|
135
|
+
}
|
136
|
+
client = client.nil? ? Uc3DmpDynamo::Client.new(debug: debug) : client
|
137
|
+
_process_search_response(response: client.query(args: args))
|
138
|
+
end
|
139
|
+
|
140
|
+
# Fetch the DMP IDs for the specified organization/institution (the org is the :dmphub_owner_org on the DMP ID record)
|
141
|
+
def _by_owner_org(owner_org:)
|
142
|
+
regex = %r{^[a-zA-Z0-9]+$}
|
143
|
+
raise FinderError, MSG_INVALID_OWNER_ID if owner_org.nil? ||(owner_org.to_s.downcase =~ regex).nil?
|
144
|
+
|
145
|
+
args = {
|
146
|
+
index_name: 'dmphub_owner_org_gsi',
|
147
|
+
key_conditions: {
|
148
|
+
dmphub_owner_org: {
|
149
|
+
attribute_value_list: [
|
150
|
+
"http://ror.org/#{owner_org.to_s.downcase}",
|
151
|
+
"https://ror.org/#{owner_org.to_s.downcase}"
|
152
|
+
],
|
153
|
+
comparison_operator: 'EQ'
|
154
|
+
}
|
155
|
+
},
|
156
|
+
filter_expression: 'SK = :version',
|
157
|
+
expression_attribute_values: { ':version': Helper::DMP_LATEST_VERSION }
|
158
|
+
}
|
159
|
+
client = client.nil? ? Uc3DmpDynamo::Client.new(debug: debug) : client
|
160
|
+
_process_search_response(response: client.query(args: args))
|
161
|
+
end
|
162
|
+
|
163
|
+
# Fetch the DMP IDs modified on the specified date (the date is the :dmphub_modification_day on the DMP ID record)
|
164
|
+
def _by_mod_day(day:)
|
165
|
+
regex = %r{^[0-9]{4}(-[0-9]{2}){2}}
|
166
|
+
raise FinderError, MSG_INVALID_OWNER_ID if day.nil? || (day.to_s =~ regex).nil?
|
167
|
+
|
168
|
+
args = {
|
169
|
+
index_name: 'dmphub_modification_day_gsi',
|
170
|
+
key_conditions: {
|
171
|
+
dmphub_modification_day: {
|
172
|
+
attribute_value_list: [day.to_s],
|
173
|
+
comparison_operator: 'EQ'
|
174
|
+
}
|
175
|
+
},
|
176
|
+
filter_expression: 'SK = :version',
|
177
|
+
expression_attribute_values: { ':version': Helper::DMP_LATEST_VERSION }
|
178
|
+
}
|
179
|
+
client = client.nil? ? Uc3DmpDynamo::Client.new(debug: debug) : client
|
180
|
+
_process_search_response(response: client.query(args: args))
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
# Transform the search results so that we do not include any of the DMPHub specific metadata
|
185
|
+
def _process_search_response(response:)
|
186
|
+
return [] unless response.is_a?(Array) && response.any?
|
187
|
+
|
188
|
+
results = response.each do |item|
|
189
|
+
dmp = item['dmp'].nil? ? JSON.parse({ dmp: item }.to_json) : item
|
190
|
+
Helper.cleanse_dmp_json(json: dmp)
|
191
|
+
end
|
192
|
+
results.compact.uniq
|
193
|
+
end
|
107
194
|
end
|
108
195
|
end
|
109
196
|
end
|
data/lib/uc3-dmp-id/updater.rb
CHANGED
@@ -9,7 +9,7 @@ module Uc3DmpId
|
|
9
9
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
10
10
|
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
11
11
|
# -------------------------------------------------------------------------
|
12
|
-
def update(provenance:, p_key:, json: {})
|
12
|
+
def update(provenance:, p_key:, json: {}, debug: false)
|
13
13
|
raise UpdaterError, MSG_DMP_INVALID_DMP_ID unless p_key.is_a?(String) && !p_key.strip.empty?
|
14
14
|
|
15
15
|
dmp = Helper.parse_json(json: json)
|
@@ -35,7 +35,8 @@ module Uc3DmpId
|
|
35
35
|
|
36
36
|
# Send the updates to EZID, notify the provenance and download the PDF if applicable
|
37
37
|
_post_process(json: dmp, debug: debug)
|
38
|
-
|
38
|
+
# Return the new version record
|
39
|
+
Helper.cleanse_dmp_json(json: JSON.parse({ dmp: new_version }.to_json))
|
39
40
|
end
|
40
41
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
41
42
|
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
data/lib/uc3-dmp-id/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uc3-dmp-id
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.75
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Riley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|