uc3-dmp-id 0.0.41 → 0.0.43
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 +7 -6
- data/lib/uc3-dmp-id/finder.rb +2 -1
- data/lib/uc3-dmp-id/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '00945fc509b066babd974cddaf43c65bfa031abe384515c7ea44daa9af532bda'
|
4
|
+
data.tar.gz: 285ccacf79b362c1d75102217f905fd9c0e50c94f9388944a8379c72433ac2bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 163f3b6170b2abbd52e33b44da555e6d079fd1efec50f86fe58b7645cae82e4b2d85aa0db05dc7a93ba3c11e3eec196d5b24371ef88230cfad39262f8f74debf
|
7
|
+
data.tar.gz: 1adc6464f455dff57420cd008de1ff42bc0e74f7c999ec29b1db4f5133f537975451864e7b4ec246aff7da69280e7ca70d31e503e1a55a4ef03fca331837448d
|
data/lib/uc3-dmp-id/creator.rb
CHANGED
@@ -19,7 +19,8 @@ module Uc3DmpId
|
|
19
19
|
raise DeleterError, MSG_DMP_FORBIDDEN unless provenance.is_a?(Hash) && !provenance['PK'].nil?
|
20
20
|
|
21
21
|
# Validate the incoming JSON first
|
22
|
-
|
22
|
+
json = Helper.parse_json(json: json)
|
23
|
+
errs = Validator.validate(mode: 'author', json: json)
|
23
24
|
raise CreatorError, errs.join(', ') if errs.is_a?(Array) && errs.any? && errs.first != Validator::MSG_VALID_JSON
|
24
25
|
|
25
26
|
# Fail if the provenance or owner affiliation are not defined
|
@@ -32,7 +33,8 @@ module Uc3DmpId
|
|
32
33
|
# raise CreatorError, Uc3DmpId::MSG_DMP_EXISTS if result.is_a?(Hash)
|
33
34
|
raise CreatorError, Uc3DmpId::MSG_DMP_EXISTS unless json['PK'].nil?
|
34
35
|
|
35
|
-
|
36
|
+
client = Uc3DmpDynamo::Client.new(debug: debug)
|
37
|
+
p_key = _preregister_dmp_id(client: client, json: json, debug: debug)
|
36
38
|
raise CreatorError, MSG_UNABLE_TO_MINT if p_key.nil?
|
37
39
|
|
38
40
|
# Add the DMPHub specific attributes and then save
|
@@ -41,7 +43,6 @@ module Uc3DmpId
|
|
41
43
|
puts annotated if debug
|
42
44
|
|
43
45
|
# Create the item
|
44
|
-
client = Uc3DmpDynamo::Client.new(debug: debug)
|
45
46
|
resp = client.put_item(json: annotated, debug: debug)
|
46
47
|
raise CreatorError, Uc3DmpId::MSG_DMP_NO_DMP_ID if resp.nil?
|
47
48
|
|
@@ -51,18 +52,18 @@ module Uc3DmpId
|
|
51
52
|
|
52
53
|
private
|
53
54
|
|
54
|
-
def _preregister_dmp_id(json:, debug: false)
|
55
|
+
def _preregister_dmp_id(client:, json:, debug: false)
|
55
56
|
# Use the specified DMP ID if the provenance has permission
|
56
57
|
existing = json.fetch('dmp_id', {})
|
57
58
|
id = existing['identifier'].gsub(%r{https?://}, Helper::PK_DMP_PREFIX) if existing.is_a?(Hash) &&
|
58
59
|
!existing['identifier'].nil?
|
59
|
-
return id if existing['type'].downcase == 'doi' && !
|
60
|
+
return id if !id.nil? && existing['type'].downcase == 'doi' && !Finder.exists?(client: client, p_key: id)
|
60
61
|
|
61
62
|
dmp_id = ''
|
62
63
|
counter = 0
|
63
64
|
while dmp_id == '' && counter <= 10
|
64
65
|
prefix = "#{ENV['DMP_ID_SHOULDER']}#{SecureRandom.hex(2).upcase}#{SecureRandom.hex(2)}"
|
65
|
-
dmp_id = prefix unless Finder.exists?(p_key: prefix)
|
66
|
+
dmp_id = prefix unless Finder.exists?(client: client, p_key: prefix)
|
66
67
|
counter += 1
|
67
68
|
end
|
68
69
|
# Something went wrong and it was unable to identify a unique id
|
data/lib/uc3-dmp-id/finder.rb
CHANGED
@@ -64,9 +64,10 @@ module Uc3DmpId
|
|
64
64
|
|
65
65
|
# Fetch just the PK to see if a record exists
|
66
66
|
# -------------------------------------------------------------------------
|
67
|
-
def exists?(p_key:)
|
67
|
+
def exists?(client:, p_key:)
|
68
68
|
raise FinderError, MSG_MISSING_PK if p_key.nil?
|
69
69
|
|
70
|
+
client = client.nil? ? Uc3DmpDynamo::Client.new(debug: debug) : client
|
70
71
|
resp = client.get_item(
|
71
72
|
key: {
|
72
73
|
PK: Helper.append_pk_prefix(p_key: p_key),
|
data/lib/uc3-dmp-id/version.rb
CHANGED