uc3-dmp-id 0.0.4 → 0.0.5

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
  SHA256:
3
- metadata.gz: 439dc6215dd2f0961bab62a72a42e5e7bf3767b349c856e444e98276ed13065e
4
- data.tar.gz: f517db3e0bf58db5c0ae7e9b66a1158dc29445fafddaab9453f6f92e4d7fb111
3
+ metadata.gz: fb6a21e1fcad936e84cad2d4067084a823104c99d68c4acf037a623c01fcf55e
4
+ data.tar.gz: 01256a0949cc0625912d4c86309375f4c9abfd4ff9d3b5c6f713c798d70161ac
5
5
  SHA512:
6
- metadata.gz: 119a39aab1d09b3c934570635563d26d5588727b708bac26ed713a93a7e011febdc20ad7c2718cc968cb0d9bc7a3e77f1580975e7a951aaeeb7316a8f565ab03
7
- data.tar.gz: 4ccfb7ca8a8cca9610b1ae207f96d128dac1c1c5adc265964b4027dc85310546c4d48fc2d6614f441614999f916d39d90e61d7eb8c70ac5e7813f08d2af61dc7
6
+ metadata.gz: b7fec6aaddcd4f9d8029731c37a0363e55a1a66679a0359c07662c1f12fdc1d213695fa5a67f4c25e5a0fb059cd9cd3b195f7c7fd14beb771bf23a2f4fd1f19f
7
+ data.tar.gz: 51e8b4a4d987673b551a3b53b435ec057f61f1b43e10d6829a26977d1c7af1d1db3d7ea1ed61f140903288fc9b766841ebfb30ed4b2ed7244ed2caad3b4269c8
@@ -23,7 +23,7 @@ module Uc3DmpId
23
23
 
24
24
  # Find the DMP's versions
25
25
  # -------------------------------------------------------------------------
26
- def versions(p_key:)
26
+ def versions(p_key:, client: nil, log_writer: nil, debug: false)
27
27
  raise Uc3DmpIdFinderError, MSG_MISSING_PK if p_key.nil?
28
28
 
29
29
  args = {
@@ -33,36 +33,36 @@ module Uc3DmpId
33
33
  projection_expression: 'modified',
34
34
  scan_index_forward: false
35
35
  }
36
- client = Uc3DmpDynamo::Client.new
36
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
37
37
  client.query(**args)
38
38
  end
39
39
 
40
40
  # Find a DMP based on the contents of the incoming JSON
41
41
  # -------------------------------------------------------------------------
42
- def by_json(json:)
42
+ def by_json(json:, log_writer: nil, debug: false)
43
43
  json = Validator.parse_json(json: json)&.fetch('dmp', {})
44
44
  raise Uc3DmpIdFinderError, MSG_INVALID_ARGS if json.nil? || (json['PK'].nil? && json['dmp_id'].nil?)
45
45
 
46
46
  p_key = json['PK']
47
47
  # Translate the incoming :dmp_id into a PK
48
48
  p_key = Helper.dmp_id_to_pk(json: json.fetch('dmp_id', {})) if p_key.nil?
49
-
50
- # find_by_PK
51
- resp = by_pk(p_key: p_key, s_key: json['SK']) unless p_key.nil?
52
- return resp unless resp.nil?
49
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
53
50
 
54
51
  # find_by_dmphub_provenance_id -> if no PK and no dmp_id result
55
- by_dmphub_provenance_identifier(json: json)
52
+ return by_provenance_identifier(json: json, client: client, log_writer: log_writer, debug: debug) if p_key.nil?
53
+
54
+ # find_by_PK
55
+ by_pk(p_key: p_key, s_key: json['SK'], client: client, log_writer: log_writer, debug: debug)
56
56
  end
57
57
 
58
58
  # Find the DMP by its PK and SK
59
59
  # -------------------------------------------------------------------------
60
- def by_pk(p_key:, s_key: Helper::DMP_LATEST_VERSION)
60
+ def by_pk(p_key:, s_key: Helper::DMP_LATEST_VERSION, client: nil, log_writer: nil, debug: false)
61
61
  raise Uc3DmpIdFinderError, MSG_MISSING_PK if p_key.nil?
62
62
 
63
63
  s_key = Helper::DMP_LATEST_VERSION if s_key.nil? || s_key.strip.empty?
64
64
 
65
- client = Uc3DmpDynamo::Client.new
65
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
66
66
  resp = client.get_item(
67
67
  key: {
68
68
  PK: Helper.append_pk_prefix(dmp: p_key),
@@ -71,13 +71,13 @@ module Uc3DmpId
71
71
  )
72
72
  return nil if resp.nil? || resp.fetch('dmp', {})['PK'].nil?
73
73
 
74
- _append_versions(p_key: resp['dmp']['PK'], dmp: resp)
74
+ _append_versions(p_key: resp['dmp']['PK'], dmp: resp, client: client)
75
75
  end
76
76
 
77
77
  # Attempt to find the DMP item by the provenance system's identifier
78
78
  # -------------------------------------------------------------------------
79
79
  # rubocop:disable Metrics/AbcSize
80
- def by_dmphub_provenance_identifier(json:)
80
+ def by_provenance_identifier(json:, client: nil, log_writer: nil, debug: false)
81
81
  raise Uc3DmpIdFinderError, MSG_MISSING_PROV_ID if json.nil? || json.fetch('dmp_id', {})['identifier'].nil?
82
82
 
83
83
  args = {
@@ -90,7 +90,7 @@ module Uc3DmpId
90
90
  filter_expression: 'SK = :version',
91
91
  expression_attribute_values: { ':version': KeyHelper::DMP_LATEST_VERSION }
92
92
  }
93
- client = Uc3DmpDynamo::Client.new
93
+ client = client.nil? ? Uc3DmpDynamo::Client.new(log_writer: log_writer, debug: debug) : client
94
94
  resp = client.query(**args)
95
95
  return resp if resp.nil? || resp['dmp'].nil?
96
96
 
@@ -103,10 +103,10 @@ module Uc3DmpId
103
103
 
104
104
  # Build the dmphub_versions array and attach it to the dmp
105
105
  # rubocop:disable Metrics/AbcSize
106
- def _append_versions(p_key:, dmp:)
106
+ def _append_versions(p_key:, dmp:, client: nil, log_writer: log_writer, debug: false)
107
107
  return dmp if p_key.nil? || !dmp.is_a?(Hash) || dmp['dmp'].nil?
108
108
 
109
- results = find_dmp_versions(p_key: p_key)
109
+ results = versions(p_key: p_key, client: client, log_writer: log_writer, debug: debug)
110
110
  return dmp unless results.length > 1
111
111
 
112
112
  versions = results.map do |version|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uc3DmpId
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.5'
5
5
  end
data/lib/uc3-dmp-id.rb CHANGED
@@ -13,6 +13,13 @@ require 'uc3-dmp-id/validator'
13
13
  require 'uc3-dmp-id/versioner'
14
14
 
15
15
  module Uc3DmpId
16
-
16
+ MSG_DMP_EXISTS = 'DMP already exists. Try :update instead.'
17
+ MSG_DMP_UNKNOWN = 'DMP does not exist. Try :create instead.'
18
+ MSG_DMP_NOT_FOUND = 'DMP does not exist.'
19
+ MSG_DMP_FORBIDDEN = 'You do not have permission.'
20
+ MSG_DMP_NO_DMP_ID = 'A DMP ID could not be registered at this time.'
21
+ MSG_DMP_INVALID_DMP_ID = 'Invalid DMP ID format.'
22
+ MSG_DMP_NO_HISTORICALS = 'You cannot modify a historical version of the DMP.'
23
+ MSG_DMP_UNABLE_TO_VERSION = 'Unable to version this DMP.'
17
24
  end
18
25
  # rubocop:enable Naming/FileName
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uc3-dmp-id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Riley