dmao-generic-ingesters 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/console +1 -1
- data/lib/dmao/ingesters/generic/funders_ingester.rb +0 -14
- data/lib/dmao/ingesters/generic/ingester.rb +24 -8
- data/lib/dmao/ingesters/generic/organisation_ingester.rb +10 -14
- data/lib/dmao/ingesters/generic/people_ingester.rb +0 -14
- data/lib/dmao/ingesters/generic/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14515f70a6f8d85f46287efdda0215af1bc1dda9
|
4
|
+
data.tar.gz: 4b358a91f560c57d6e44918cd15bcad63cb26147
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa75f4a64f4b4e86003162acdb220327ee33140b05c3beccf03784a376d3651d5198bd860fc1d3267414031dd6c3a9bba0475daa41a782b1d5bdc2690735e8a5
|
7
|
+
data.tar.gz: 2f75e695c3b0d19ce70cbb754a40e1a656d687ec36c9360663e5296dc547c197cea30a1b493c6f94766610338767cb7147058022179eec7444f6e99dc2fbfa25
|
data/bin/console
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
|
-
require "generic/
|
4
|
+
require "dmao/ingesters/generic/ingester"
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -13,20 +13,6 @@ module DMAO
|
|
13
13
|
INVALID_ENTITY_ERROR = DMAO::API::Errors::InvalidFunder
|
14
14
|
ENTITY_ERROR_MESSAGE = "Invalid funder details"
|
15
15
|
|
16
|
-
def ingest_funder attributes={}
|
17
|
-
ingest_entity attributes
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def add_funder attributes
|
23
|
-
add_entity attributes
|
24
|
-
end
|
25
|
-
|
26
|
-
def update_funder id, attributes
|
27
|
-
update_entity id, attributes
|
28
|
-
end
|
29
|
-
|
30
16
|
end
|
31
17
|
|
32
18
|
end
|
@@ -16,11 +16,29 @@ module DMAO
|
|
16
16
|
ENTITY_ERROR_MESSAGE = nil
|
17
17
|
|
18
18
|
def initialize(api_url=nil, api_token=nil, institution_id=nil)
|
19
|
+
|
19
20
|
DMAO::API.configure do |config|
|
20
21
|
config.base_url = api_url
|
21
22
|
config.api_token = api_token
|
22
23
|
config.institution_id = institution_id
|
23
24
|
end
|
25
|
+
|
26
|
+
if self.class::ENTITY.nil?
|
27
|
+
raise "Entity not set"
|
28
|
+
end
|
29
|
+
|
30
|
+
add_method_name = "add_#{self.class.entity_name.tr(' ', '_')}"
|
31
|
+
update_method_name = "update_#{self.class.entity_name.tr(' ', '_')}"
|
32
|
+
ingest_method_name = "ingest_#{self.class.entity_name.tr(' ', '_')}"
|
33
|
+
|
34
|
+
self.class.send(:define_method, add_method_name, Proc.new {|attributes| add_entity(attributes)}) unless self.respond_to?(add_method_name, include_all: true)
|
35
|
+
self.class.send(:define_method, update_method_name, Proc.new {|id, attributes| update_entity(id, attributes)}) unless self.respond_to?(update_method_name, include_all: true)
|
36
|
+
self.class.send(:define_method, ingest_method_name, Proc.new {|attributes={}| ingest_entity(attributes)}) unless self.respond_to?(ingest_method_name, include_all: true)
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.entity_name
|
41
|
+
self::ENTITY.to_s.split('::')[-1].gsub(/[A-Z]/, " \\0").downcase.strip
|
24
42
|
end
|
25
43
|
|
26
44
|
def ingest
|
@@ -29,7 +47,7 @@ module DMAO
|
|
29
47
|
|
30
48
|
def ingest_entity attributes = {}
|
31
49
|
|
32
|
-
raise DMAO::Ingesters::Errors::EmptyAttributes.new("Cannot ingest #{entity_name} without attributes.") if attributes.nil? || attributes.empty?
|
50
|
+
raise DMAO::Ingesters::Errors::EmptyAttributes.new("Cannot ingest #{self.class.entity_name} without attributes.") if attributes.nil? || attributes.empty?
|
33
51
|
|
34
52
|
begin
|
35
53
|
|
@@ -45,7 +63,7 @@ module DMAO
|
|
45
63
|
rescue DMAO::API::Errors::EntityNotFound
|
46
64
|
add_entity attributes
|
47
65
|
rescue DMAO::API::Errors::InvalidResponseLength
|
48
|
-
raise self.class::ENTITY_ERROR.new("More than one #{entity_name} returned for system uuid #{attributes[:system_uuid]}.")
|
66
|
+
raise self.class::ENTITY_ERROR.new("More than one #{self.class.entity_name} returned for system uuid #{attributes[:system_uuid]}.")
|
49
67
|
end
|
50
68
|
|
51
69
|
end
|
@@ -66,12 +84,14 @@ module DMAO
|
|
66
84
|
|
67
85
|
end
|
68
86
|
|
87
|
+
private
|
88
|
+
|
69
89
|
def add_entity attributes={}
|
70
90
|
|
71
91
|
begin
|
72
92
|
self.class::ENTITY.create attributes
|
73
93
|
rescue DMAO::API::Errors::InstitutionNotFound
|
74
|
-
raise self.class::ENTITY_ERROR.new("Institution not found, cannot ingest #{entity_name} to non-existent institution")
|
94
|
+
raise self.class::ENTITY_ERROR.new("Institution not found, cannot ingest #{self.class.entity_name} to non-existent institution")
|
75
95
|
rescue self.class::INVALID_ENTITY_ERROR => e
|
76
96
|
parse_unprocessable_errors(e.errors)
|
77
97
|
end
|
@@ -83,17 +103,13 @@ module DMAO
|
|
83
103
|
begin
|
84
104
|
self.class::ENTITY.update entity_id, attributes
|
85
105
|
rescue DMAO::API::Errors::EntityNotFound
|
86
|
-
raise self.class::ENTITY_ERROR.new("#{entity_name.capitalize} not found, cannot update #{entity_name} that does not exist")
|
106
|
+
raise self.class::ENTITY_ERROR.new("#{self.class.entity_name.capitalize} not found, cannot update #{self.class.entity_name} that does not exist")
|
87
107
|
rescue self.class::INVALID_ENTITY_ERROR => e
|
88
108
|
parse_unprocessable_errors(e.errors)
|
89
109
|
end
|
90
110
|
|
91
111
|
end
|
92
112
|
|
93
|
-
def entity_name
|
94
|
-
self.class::ENTITY.to_s.split('::')[-1].gsub(/[A-Z]/, " \\0").strip.downcase
|
95
|
-
end
|
96
|
-
|
97
113
|
end
|
98
114
|
|
99
115
|
end
|
@@ -16,10 +16,6 @@ module DMAO
|
|
16
16
|
ENTITY_ERROR = DMAO::Ingesters::Errors::IngestOrganisationUnitError
|
17
17
|
ENTITY_ERROR_MESSAGE = "Invalid organisation unit details"
|
18
18
|
|
19
|
-
def ingest_organisation_unit attributes={}
|
20
|
-
ingest_entity attributes
|
21
|
-
end
|
22
|
-
|
23
19
|
def link_child_to_parent child_system_uuid, parent_system_uuid
|
24
20
|
|
25
21
|
child_unit = find_unit_or_raise_link_error child_system_uuid, "Organisation unit not found for child system uuid #{child_system_uuid}"
|
@@ -33,16 +29,6 @@ module DMAO
|
|
33
29
|
|
34
30
|
end
|
35
31
|
|
36
|
-
private
|
37
|
-
|
38
|
-
def add_entity attributes
|
39
|
-
add_organisation_unit attributes
|
40
|
-
end
|
41
|
-
|
42
|
-
def update_entity id, attributes
|
43
|
-
update_organisation_unit id, attributes
|
44
|
-
end
|
45
|
-
|
46
32
|
def add_organisation_unit attributes
|
47
33
|
|
48
34
|
begin
|
@@ -73,6 +59,16 @@ module DMAO
|
|
73
59
|
|
74
60
|
end
|
75
61
|
|
62
|
+
protected
|
63
|
+
|
64
|
+
def add_entity attributes
|
65
|
+
add_organisation_unit attributes
|
66
|
+
end
|
67
|
+
|
68
|
+
def update_entity id, attributes
|
69
|
+
update_organisation_unit id, attributes
|
70
|
+
end
|
71
|
+
|
76
72
|
def find_unit_or_raise_link_error unit_system_uuid, error_message
|
77
73
|
|
78
74
|
begin
|
@@ -17,20 +17,6 @@ module DMAO
|
|
17
17
|
INVALID_ENTITY_ERROR = DMAO::API::Errors::InvalidPerson
|
18
18
|
ENTITY_ERROR_MESSAGE = "Invalid person details"
|
19
19
|
|
20
|
-
def ingest_person attributes={}
|
21
|
-
ingest_entity attributes
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def add_person attributes
|
27
|
-
add_entity attributes
|
28
|
-
end
|
29
|
-
|
30
|
-
def update_person id, attributes
|
31
|
-
update_entity id, attributes
|
32
|
-
end
|
33
|
-
|
34
20
|
end
|
35
21
|
|
36
22
|
end
|