arii 1.2.1 → 1.2.2
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/Gemfile.lock +23 -4
- data/arii.gemspec +12 -12
- data/lib/arii/agent.rb +47 -48
- data/lib/arii/cashier.rb +1 -1
- data/lib/arii/client.rb +43 -43
- data/lib/arii/csvdetector.rb +5 -5
- data/lib/arii/csvseedreader.rb +3 -3
- data/lib/arii/detector.rb +30 -30
- data/lib/arii/helper.rb +33 -34
- data/lib/arii/jsondetector.rb +8 -8
- data/lib/arii/jsonseedreader.rb +3 -3
- data/lib/arii/seedreader.rb +8 -8
- data/lib/arii/sqldetector.rb +5 -5
- data/lib/arii/sqlseedreader.rb +7 -7
- data/lib/arii/version.rb +1 -1
- data/lib/arii/xmldetector.rb +4 -4
- data/lib/arii/xmlseedreader.rb +1 -1
- data/lib/arii.rb +21 -22
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29034e712942cd799e3b863e318227bbe8705bfb
|
4
|
+
data.tar.gz: d0497fc1f4a3273a4d15d70f1b928a26449a7d3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38b0c85405e47d5d87baccc6183bc2044d9fcc4f1369fd098e60bb3719750f45556ddb11b1f74faf67b2463e447c3328ce1b932a00e20f1d43796ed867e24b84
|
7
|
+
data.tar.gz: de273e5aa0777e7980be1603ba7abb14f2d9d11ae4f619d10617b2c3b3ed7ec1acc3b54251bf41c8bfa1ab70f3e7e1706cf7cc0419321f88ca9cdb5c26dcaad7
|
data/Gemfile.lock
CHANGED
@@ -1,17 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
arii (
|
4
|
+
arii (1.2.2)
|
5
|
+
jsonpath (~> 0)
|
6
|
+
nokogiri
|
7
|
+
rest-client (~> 0)
|
8
|
+
rubyXL
|
9
|
+
spreadsheet
|
5
10
|
|
6
11
|
GEM
|
7
12
|
remote: https://rubygems.org/
|
8
13
|
specs:
|
9
|
-
|
14
|
+
jsonpath (0.5.6)
|
15
|
+
multi_json
|
16
|
+
mini_portile (0.6.2)
|
17
|
+
multi_json (1.11.0)
|
18
|
+
nokogiri (1.6.6.2)
|
19
|
+
mini_portile (~> 0.6.0)
|
20
|
+
rake (0.9.6)
|
21
|
+
rest-client (0.9.2)
|
22
|
+
ruby-ole (1.2.11.8)
|
23
|
+
rubyXL (3.3.7)
|
24
|
+
nokogiri (>= 1.4.4)
|
25
|
+
rubyzip (>= 1.1.6)
|
26
|
+
rubyzip (1.1.7)
|
27
|
+
spreadsheet (1.0.3)
|
28
|
+
ruby-ole (>= 1.0)
|
10
29
|
|
11
30
|
PLATFORMS
|
12
31
|
ruby
|
13
32
|
|
14
33
|
DEPENDENCIES
|
15
|
-
bundler (~> 1.5)
|
16
34
|
arii!
|
17
|
-
|
35
|
+
bundler (~> 1.5)
|
36
|
+
rake (~> 0)
|
data/arii.gemspec
CHANGED
@@ -4,17 +4,17 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'arii/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
15
|
-
spec.files
|
16
|
-
spec.executables
|
17
|
-
spec.test_files
|
7
|
+
spec.name = "arii"
|
8
|
+
spec.version = ARII::VERSION
|
9
|
+
spec.authors = ["Pedro Lopes"]
|
10
|
+
spec.email = ["hello@pedrolopes.net"]
|
11
|
+
spec.summary = %q{arii client library for distributed agents.}
|
12
|
+
spec.description = %q{ARiiP: integrate everything. Automated real-time integration & interoperability platform.}
|
13
|
+
spec.homepage = "http://ariip.com/"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_development_dependency "bundler", "~> 1.5"
|
@@ -23,6 +23,6 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_runtime_dependency 'rest-client', '~> 0'
|
24
24
|
spec.add_runtime_dependency 'nokogiri'
|
25
25
|
spec.add_runtime_dependency 'rubyXL'
|
26
|
-
spec.add_runtime_dependency 'spreadsheet'
|
26
|
+
spec.add_runtime_dependency 'spreadsheet', '~> 0'
|
27
27
|
spec.add_runtime_dependency 'jsonpath', '~> 0'
|
28
28
|
end
|
data/lib/arii/agent.rb
CHANGED
@@ -12,9 +12,9 @@ module ARII
|
|
12
12
|
@cache = agent[:payload][:cache]
|
13
13
|
@seeds = agent[:seeds]
|
14
14
|
@selectors = agent[:payload][:selectors]
|
15
|
-
ARII::Config.log.debug(self.class.name) {"Agent #{@identifier} initialized"}
|
15
|
+
ARII::Config.log.debug(self.class.name) { "Agent #{@identifier} initialized" }
|
16
16
|
rescue Exception => e
|
17
|
-
ARII::Config.log.error(self.class.name) {"Unable to initialize agent. #{e}"}
|
17
|
+
ARII::Config.log.error(self.class.name) { "Unable to initialize agent. #{e}" }
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
@@ -27,41 +27,41 @@ module ARII
|
|
27
27
|
@checkup = {}
|
28
28
|
|
29
29
|
case @publisher
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
30
|
+
when 'sql'
|
31
|
+
begin
|
32
|
+
@d = ARII::SQLDetector.new(self)
|
33
|
+
rescue Exception => e
|
34
|
+
@response = {:status => 400, :error => e}
|
35
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
36
|
+
end
|
37
|
+
when 'csv'
|
38
|
+
begin
|
39
|
+
@d = ARII::CSVDetector.new(self)
|
40
|
+
rescue Exception => e
|
41
|
+
@response = {:status => 400, :error => e}
|
42
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
43
|
+
end
|
44
|
+
when 'excel'
|
45
|
+
begin
|
46
|
+
@d = ARII::ExcelDetector.new(self)
|
47
|
+
rescue Exception => e
|
48
|
+
@response = {:status => 400, :error => e}
|
49
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
50
|
+
end
|
51
|
+
when 'xml'
|
52
|
+
begin
|
53
|
+
@d = ARII::XMLDetector.new(self)
|
54
|
+
rescue Exception => e
|
55
|
+
@response = {:status => 400, :error => e}
|
56
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
57
|
+
end
|
58
|
+
when 'json'
|
59
|
+
begin
|
60
|
+
@d = ARII::JSONDetector.new(self)
|
61
|
+
rescue Exception => e
|
62
|
+
@response = {:status => 400, :error => e}
|
63
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
64
|
+
end
|
65
65
|
end
|
66
66
|
|
67
67
|
|
@@ -72,7 +72,7 @@ module ARII
|
|
72
72
|
end
|
73
73
|
@checkup = @d.checkup
|
74
74
|
rescue Exception => e
|
75
|
-
ARII::Config.log.error(self.class.name) {"Checkup error: #{e}"}
|
75
|
+
ARII::Config.log.error(self.class.name) { "Checkup error: #{e}" }
|
76
76
|
end
|
77
77
|
|
78
78
|
# Start detection
|
@@ -83,7 +83,7 @@ module ARII
|
|
83
83
|
|
84
84
|
@checkup[:templates] = @d.templates.uniq
|
85
85
|
rescue Exception => e
|
86
|
-
ARII::Config.log.error(self.class.name) {"Detection error: #{e}"}
|
86
|
+
ARII::Config.log.error(self.class.name) { "Detection error: #{e}" }
|
87
87
|
end
|
88
88
|
|
89
89
|
begin
|
@@ -91,33 +91,32 @@ module ARII
|
|
91
91
|
process @checkup
|
92
92
|
end
|
93
93
|
rescue Exception => e
|
94
|
-
ARII::Config.log.error(self.class.name) {"Process error: #{e}"}
|
94
|
+
ARII::Config.log.error(self.class.name) { "Process error: #{e}" }
|
95
95
|
end
|
96
96
|
response = {:status => @checkup[:status], :message => "[ARII][Checkup][execute] All OK."}
|
97
97
|
end
|
98
98
|
|
99
99
|
|
100
|
-
|
101
100
|
##
|
102
101
|
# => Process agent checks.
|
103
102
|
#
|
104
103
|
def process checkup
|
105
104
|
begin
|
106
105
|
checkup[:templates].each do |template|
|
107
|
-
ARII::Config.log.info(self.class.name) {"Delivering to #{template} template."}
|
106
|
+
ARII::Config.log.info(self.class.name) { "Delivering to #{template} template." }
|
108
107
|
checkup[:payload].each do |payload|
|
109
|
-
ARII::Config.log.debug(self.class.name) {"Processing #{payload}."}
|
108
|
+
ARII::Config.log.debug(self.class.name) { "Processing #{payload}." }
|
110
109
|
response = RestClient.post "#{ARII::Config.host}postman/deliver/#{template}.js", payload
|
111
110
|
case response.code
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
111
|
+
when 200
|
112
|
+
ARII::Config.log.debug(self.class.name) { "Delivered to #{template}." }
|
113
|
+
else
|
114
|
+
ARII::Config.log.warn(self.class.name) { "unable to deliver \"#{payload}\" to \"#{template}\"" }
|
116
115
|
end
|
117
116
|
end
|
118
117
|
end
|
119
118
|
rescue Exception => e
|
120
|
-
ARII::Config.log.error(self.class.name) {"Processing error: #{e}"}
|
119
|
+
ARII::Config.log.error(self.class.name) { "Processing error: #{e}" }
|
121
120
|
end
|
122
121
|
|
123
122
|
end
|
data/lib/arii/cashier.rb
CHANGED
@@ -19,7 +19,7 @@ module ARII
|
|
19
19
|
begin
|
20
20
|
response = RestClient.post "#{ARII::Config.host}fluxcapacitor/verify.json", {:access_token => ARII::Config.access_token, :agent => agent[:identifier], :cache => cache, :payload => payload, :seed => seed}
|
21
21
|
rescue Exception => e
|
22
|
-
ARII::Config.log.error(self.class.name) {"#{e}"}
|
22
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
23
23
|
response = {:status => 400, :error => e}
|
24
24
|
end
|
25
25
|
response
|
data/lib/arii/client.rb
CHANGED
@@ -1,53 +1,53 @@
|
|
1
1
|
require 'rest_client'
|
2
2
|
|
3
3
|
module ARII
|
4
|
-
|
4
|
+
class Client
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
##
|
7
|
+
# => Load configuration properties from client/script code
|
8
|
+
#
|
9
|
+
def initialize config, log
|
10
|
+
begin
|
11
|
+
@config = config
|
12
|
+
ARII::Config.set_access_token config[:server][:api_key]
|
13
|
+
ARII::Config.set_host config[:server][:host]
|
14
|
+
ARII::Config.set_log log
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
ARII::Config.log.info(self.class.name) { 'Configuration loaded successfully.' }
|
17
|
+
rescue Exception => e
|
18
|
+
ARII::Config.log.error(self.class.name) { "Failed to load configuration: #{e}" }
|
19
|
+
end
|
20
20
|
|
21
|
-
|
21
|
+
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
##
|
24
|
+
# => Validate API key.
|
25
|
+
#
|
26
|
+
def validate
|
27
|
+
begin
|
28
|
+
ARII::Config.log.info(self.class.name) { 'Launching validation.' }
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
30
|
+
out = RestClient.post "#{ARII::Config.host}fluxcapacitor/validate_key.json", {:access_token => ARII::Config.access_token}
|
31
|
+
response = {:status => 100, :response => out.to_str}
|
32
|
+
rescue Exception => e
|
33
|
+
ARII::Config.log.error(self.class.name) { "Failed validation: #{e}" }
|
34
|
+
end
|
35
|
+
response
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
38
|
+
##
|
39
|
+
# => Start processing agents from configuration properties.
|
40
|
+
#
|
41
|
+
def process
|
42
|
+
ARII::Config.log.info(self.class.name) { 'Starting agent processing.' }
|
43
|
+
begin
|
44
|
+
@config[:agents].each do |agent|
|
45
|
+
a = ARII::Agent.new agent
|
46
|
+
a.execute
|
47
|
+
end
|
48
|
+
rescue Exception => e
|
49
|
+
ARII::Config.log.error(self.class.name) { "Failed agent processing: #{e}" }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
53
|
end
|
data/lib/arii/csvdetector.rb
CHANGED
@@ -16,7 +16,7 @@ module ARII
|
|
16
16
|
#
|
17
17
|
def detect object
|
18
18
|
|
19
|
-
ARII::Config.log.debug(self.class.name) {"Monitoring #{object[:uri]}"}
|
19
|
+
ARII::Config.log.debug(self.class.name) { "Monitoring #{object[:uri]}" }
|
20
20
|
CSV.new(open(object[:uri]), :headers => :first_row).each do |row|
|
21
21
|
begin
|
22
22
|
unless object[:cache].nil? then
|
@@ -25,7 +25,7 @@ module ARII
|
|
25
25
|
@response = Cashier.verify row[0], object, row, object[:seed]
|
26
26
|
end
|
27
27
|
rescue Exception => e
|
28
|
-
ARII::Config.log.error(self.class.name) {"Loading error: #{e}"}
|
28
|
+
ARII::Config.log.error(self.class.name) { "Loading error: #{e}" }
|
29
29
|
end
|
30
30
|
|
31
31
|
begin
|
@@ -40,12 +40,12 @@ module ARII
|
|
40
40
|
# The actual processing
|
41
41
|
#
|
42
42
|
if @cache[:cache][:status] == 100 then
|
43
|
-
ARII::Config.log.info(self.class.name) {"Not on cache, generating payload"}
|
43
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
44
44
|
|
45
45
|
payload = Hash.new
|
46
46
|
|
47
47
|
object[:selectors].each do |selector|
|
48
|
-
selector.each do |k,v|
|
48
|
+
selector.each do |k, v|
|
49
49
|
payload[k] = row[v.to_i]
|
50
50
|
end
|
51
51
|
end
|
@@ -54,7 +54,7 @@ module ARII
|
|
54
54
|
end
|
55
55
|
|
56
56
|
rescue Exception => e
|
57
|
-
ARII::Config.log.error(self.class.name) {"Processing error: #{e}"}
|
57
|
+
ARII::Config.log.error(self.class.name) { "Processing error: #{e}" }
|
58
58
|
end
|
59
59
|
@cache[:templates]
|
60
60
|
end
|
data/lib/arii/csvseedreader.rb
CHANGED
@@ -17,7 +17,7 @@ module ARII
|
|
17
17
|
CSV.new(open(@seed[:payload][:uri]), :headers => :first_row).each do |row|
|
18
18
|
begin
|
19
19
|
object = @help.deep_copy @agent[:payload]
|
20
|
-
object.each_pair do |key,value|
|
20
|
+
object.each_pair do |key, value|
|
21
21
|
variables = @help.identify_variables(object[key])
|
22
22
|
variables.each do |v|
|
23
23
|
object[key].gsub!("%{#{v}}", row[@seed[:payload][:selectors][v].to_i])
|
@@ -25,9 +25,9 @@ module ARII
|
|
25
25
|
end
|
26
26
|
|
27
27
|
unless @seed[:payload][:cache].nil? then
|
28
|
-
|
28
|
+
object[:seed] = row[@seed[:payload][:cache].to_i]
|
29
29
|
else
|
30
|
-
|
30
|
+
object[:seed] = row[0]
|
31
31
|
end
|
32
32
|
|
33
33
|
|
data/lib/arii/detector.rb
CHANGED
@@ -21,9 +21,9 @@ module ARII
|
|
21
21
|
@payloads = Array.new
|
22
22
|
@objects = Array.new
|
23
23
|
@help = ARII::Helper.new
|
24
|
-
ARII::Config.log.info(self.class.name) {"Started new #{agent.identifier} detector"}
|
24
|
+
ARII::Config.log.info(self.class.name) { "Started new #{agent.identifier} detector" }
|
25
25
|
rescue Exception => e
|
26
|
-
ARII::Config.log.error(self.class.name) {"#{e}"}
|
26
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -42,30 +42,30 @@ module ARII
|
|
42
42
|
unless @agent.seeds.nil? then
|
43
43
|
@agent.seeds.each do |seed|
|
44
44
|
case seed[:publisher]
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
45
|
+
when 'csv'
|
46
|
+
begin
|
47
|
+
@sr = ARII::CSVSeedReader.new(@agent, seed)
|
48
|
+
rescue Exception => e
|
49
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
50
|
+
end
|
51
|
+
when 'sql'
|
52
|
+
begin
|
53
|
+
@sr = ARII::SQLSeedReader.new(@agent, seed)
|
54
|
+
rescue Exception => e
|
55
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
56
|
+
end
|
57
|
+
when 'xml'
|
58
|
+
begin
|
59
|
+
@sr = ARII::XMLSeedReader.new(@agent, seed)
|
60
|
+
rescue Exception => e
|
61
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
62
|
+
end
|
63
|
+
when 'json'
|
64
|
+
begin
|
65
|
+
@sr = ARII::JSONSeedReader.new(@agent, seed)
|
66
|
+
rescue Exception => e
|
67
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
68
|
+
end
|
69
69
|
end
|
70
70
|
begin
|
71
71
|
@reads = @sr.read
|
@@ -73,7 +73,7 @@ module ARII
|
|
73
73
|
@objects.push read
|
74
74
|
end
|
75
75
|
rescue Exception => e
|
76
|
-
ARII::Config.log.error(self.class.name) {"#{e}"}
|
76
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -92,7 +92,7 @@ module ARII
|
|
92
92
|
end
|
93
93
|
rescue Exception => e
|
94
94
|
@response = {:status => 404, :message => "[ARII][Detector] failed to load doc, #{e}"}
|
95
|
-
ARII::Config.log.error(self.class.name) {"#{e}"}
|
95
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
96
96
|
end
|
97
97
|
|
98
98
|
begin
|
@@ -100,10 +100,10 @@ module ARII
|
|
100
100
|
|
101
101
|
|
102
102
|
@templates = Array.new
|
103
|
-
@response = {
|
103
|
+
@response = {:payload => @payloads, :templates => @templates, :status => 100}
|
104
104
|
rescue Exception => e
|
105
105
|
@response = {:status => 404, :message => "[ARII][Detector] failed to process queries, #{e}"}
|
106
|
-
ARII::Config.log.error(self.class.name) {"#{e}"}
|
106
|
+
ARII::Config.log.error(self.class.name) { "#{e}" }
|
107
107
|
end
|
108
108
|
@response
|
109
109
|
end
|
data/lib/arii/helper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
module ARII
|
3
2
|
|
4
3
|
##
|
@@ -11,7 +10,7 @@ module ARII
|
|
11
10
|
|
12
11
|
def initialize
|
13
12
|
# load each helper function into a map for replacement in the delivery
|
14
|
-
@replacements = [
|
13
|
+
@replacements = [["%{ARII.date}", self.date], ["%{ARII.datetime}", self.datetime], ["%{ARII.hostname}", self.hostname]]
|
15
14
|
end
|
16
15
|
|
17
16
|
public
|
@@ -55,42 +54,42 @@ module ARII
|
|
55
54
|
# + *payload* - content for validation
|
56
55
|
#
|
57
56
|
def self.validate_payload publisher, payload
|
58
|
-
@database_servers = ["mysql","sqlite","postgresql"]
|
57
|
+
@database_servers = ["mysql", "sqlite", "postgresql"]
|
59
58
|
valid = true
|
60
59
|
|
61
60
|
begin
|
62
61
|
case publisher
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
62
|
+
when 'csv', 'xml', 'json', 'file', 'js'
|
63
|
+
# file content URI is mandatory
|
64
|
+
if payload[:uri].nil? then
|
65
|
+
valid = false
|
66
|
+
end
|
67
|
+
when 'sql'
|
68
|
+
|
69
|
+
# check if database server is available
|
70
|
+
unless database_servers.include? payload[:server] then
|
71
|
+
valid = false
|
72
|
+
end
|
73
|
+
|
74
|
+
# database username is mandatory
|
75
|
+
if payload[:username].nil? then
|
76
|
+
valid = false
|
77
|
+
end
|
78
|
+
|
79
|
+
# database user password is mandatory
|
80
|
+
if payload[:password].nil? then
|
81
|
+
valid = false
|
82
|
+
end
|
83
|
+
|
84
|
+
# database name is mandatory
|
85
|
+
if payload[:database].nil? then
|
86
|
+
valid = false
|
87
|
+
end
|
88
|
+
|
89
|
+
# database query is mandatory
|
90
|
+
if payload[:query].nil? then
|
91
|
+
valid = false
|
92
|
+
end
|
94
93
|
end
|
95
94
|
rescue Exception => e
|
96
95
|
|
data/lib/arii/jsondetector.rb
CHANGED
@@ -17,7 +17,7 @@ module ARII
|
|
17
17
|
# == Detect the changes
|
18
18
|
#
|
19
19
|
def detect object
|
20
|
-
ARII::Config.log.info(self.class.name) {"Monitoring #{object[:uri]}"} unless object[:uri].nil?
|
20
|
+
ARII::Config.log.info(self.class.name) { "Monitoring #{object[:uri]}" } unless object[:uri].nil?
|
21
21
|
|
22
22
|
begin
|
23
23
|
if object[:uri] == '' then
|
@@ -26,14 +26,14 @@ module ARII
|
|
26
26
|
url = RestClient.get object[:uri]
|
27
27
|
@doc = url.to_str
|
28
28
|
end
|
29
|
-
JsonPath.on(@doc,object[:query]).each do |element|
|
29
|
+
JsonPath.on(@doc, object[:query]).each do |element|
|
30
30
|
JsonPath.on(element, object[:cache]).each do |c|
|
31
31
|
@response = Cashier.verify c, object, c, object[:seed]
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
# Process ARII cache response
|
35
|
+
@cache = JSON.parse(@response, {:symbolize_names => true})
|
36
|
+
unless @cache[:templates].nil? then
|
37
37
|
@cache[:templates].each do |t|
|
38
38
|
@templates.push t
|
39
39
|
end
|
@@ -43,11 +43,11 @@ module ARII
|
|
43
43
|
# If not on cache, add to payload for processing
|
44
44
|
#
|
45
45
|
if @cache[:cache][:status] == 100 then
|
46
|
-
ARII::Config.log.info(self.class.name) {"Not on cache, generating payload"}
|
46
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
47
47
|
# add row data to payload from selectors (key => key, value => column name)
|
48
48
|
payload = Hash.new
|
49
49
|
object[:selectors].each do |selector|
|
50
|
-
selector.each do |k,v|
|
50
|
+
selector.each do |k, v|
|
51
51
|
JsonPath.on(element, v).each do |el|
|
52
52
|
payload[k] = el
|
53
53
|
end
|
@@ -59,7 +59,7 @@ module ARII
|
|
59
59
|
|
60
60
|
end
|
61
61
|
rescue Exception => e
|
62
|
-
ARII::Config.log.error(self.class.name) {"Loading error: #{e}"}
|
62
|
+
ARII::Config.log.error(self.class.name) { "Loading error: #{e}" }
|
63
63
|
end
|
64
64
|
@cache[:templates]
|
65
65
|
end
|
data/lib/arii/jsonseedreader.rb
CHANGED
@@ -16,11 +16,11 @@ module ARII
|
|
16
16
|
begin
|
17
17
|
url = RestClient.get @seed[:payload][:uri]
|
18
18
|
@doc = url.to_str
|
19
|
-
JsonPath.on(@doc
|
19
|
+
JsonPath.on(@doc, @seed[:payload][:query]).each do |element|
|
20
20
|
|
21
21
|
begin
|
22
22
|
object = @help.deep_copy @agent[:payload]
|
23
|
-
object.each_pair do |key,value|
|
23
|
+
object.each_pair do |key, value|
|
24
24
|
variables = @help.identify_variables(object[key])
|
25
25
|
variables.each do |v|
|
26
26
|
|
@@ -31,7 +31,7 @@ module ARII
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
JsonPath.on(element
|
34
|
+
JsonPath.on(element, @seed[:payload][:cache]).each do |el|
|
35
35
|
object[:seed] = el
|
36
36
|
|
37
37
|
end
|
data/lib/arii/seedreader.rb
CHANGED
@@ -8,14 +8,14 @@ module ARII
|
|
8
8
|
# Main seed reading class, passing data for seeds to agent, to be inherited by SQL, File and URL templates
|
9
9
|
#
|
10
10
|
class SeedReader
|
11
|
-
|
11
|
+
attr_accessor :seed, :objects, :agent
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
def initialize agent, seed
|
14
|
+
@agent = agent
|
15
|
+
@help = ARII::Helper.new
|
16
|
+
@seed = seed
|
17
|
+
@objects = Array.new
|
18
|
+
# puts "\t\tSeed: #{@seed[:identifier]}"
|
19
|
+
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/arii/sqldetector.rb
CHANGED
@@ -15,9 +15,9 @@ module ARII
|
|
15
15
|
# == Detect the changes
|
16
16
|
#
|
17
17
|
def detect object
|
18
|
-
ARII::Config.log.debug(self.class.name) {"Monitoring #{object[:host]}"}
|
18
|
+
ARII::Config.log.debug(self.class.name) { "Monitoring #{object[:host]}" }
|
19
19
|
begin
|
20
|
-
@client = Mysql2::Client.new(:host => object[:host], :username => object[:username]
|
20
|
+
@client = Mysql2::Client.new(:host => object[:host], :username => object[:username], :password => object[:password], :database => object[:database])
|
21
21
|
@client.query(object[:query]).each(:symbolize_keys => false) do |row|
|
22
22
|
unless object[:cache].nil? then
|
23
23
|
@response = Cashier.verify row[object[:cache]], object, row, object[:seed]
|
@@ -35,11 +35,11 @@ module ARII
|
|
35
35
|
# The actual processing
|
36
36
|
#
|
37
37
|
if @cache[:cache][:status] == 100 then
|
38
|
-
ARII::Config.log.info(self.class.name) {"Not on cache, generating payload"}
|
38
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
39
39
|
# add row data to payload from selectors (key => key, value => column name)
|
40
40
|
payload = Hash.new
|
41
41
|
object[:selectors].each do |selector|
|
42
|
-
selector.each do |k,v|
|
42
|
+
selector.each do |k, v|
|
43
43
|
payload[k] = row[v]
|
44
44
|
end
|
45
45
|
end
|
@@ -48,7 +48,7 @@ module ARII
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
rescue Exception => e
|
51
|
-
ARII::Config.log.error(self.class.name) {"Processing error: #{e}"}
|
51
|
+
ARII::Config.log.error(self.class.name) { "Processing error: #{e}" }
|
52
52
|
end
|
53
53
|
@cache[:templates]
|
54
54
|
end
|
data/lib/arii/sqlseedreader.rb
CHANGED
@@ -14,17 +14,17 @@ module Services
|
|
14
14
|
#
|
15
15
|
def read
|
16
16
|
begin
|
17
|
-
@client = Mysql2::Client.new(:host => @seed[:payload][:host], :username => @seed[:payload][:username]
|
18
|
-
@client.query(@seed[:payload][:query], :cast => false).each(:symbolize_keys => false) do |row|
|
17
|
+
@client = Mysql2::Client.new(:host => @seed[:payload][:host], :username => @seed[:payload][:username], :password => @seed[:payload][:password], :database => @seed[:payload][:database])
|
18
|
+
@client.query(@seed[:payload][:query], :cast => false).each(:symbolize_keys => false) do |row|
|
19
19
|
begin
|
20
|
-
|
21
|
-
object.each_pair do |key,value|
|
20
|
+
object = @help.deep_copy @agent[:payload]
|
21
|
+
object.each_pair do |key, value|
|
22
22
|
variables = @help.identify_variables(object[key])
|
23
23
|
variables.each do |v|
|
24
24
|
object[key].gsub!("%{#{v}}", row[@seed[:payload][:selectors][v]].to_str)
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
unless @seed[:payload][:cache].nil? then
|
29
29
|
object[:seed] = row[@seed[:payload][:cache]]
|
30
30
|
else
|
@@ -37,9 +37,9 @@ module Services
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
rescue Exception => e
|
40
|
-
|
40
|
+
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
@objects
|
44
44
|
end
|
45
45
|
end
|
data/lib/arii/version.rb
CHANGED
data/lib/arii/xmldetector.rb
CHANGED
@@ -13,7 +13,7 @@ module ARII
|
|
13
13
|
# == Detect the changes
|
14
14
|
#
|
15
15
|
def detect object
|
16
|
-
ARII::Config.log.info(self.class.name) {"Monitoring #{object[:uri]}"} unless object[:uri].nil?
|
16
|
+
ARII::Config.log.info(self.class.name) { "Monitoring #{object[:uri]}" } unless object[:uri].nil?
|
17
17
|
begin
|
18
18
|
if object[:uri] == '' then
|
19
19
|
@doc = Nokogiri::XML(object[:content])
|
@@ -38,12 +38,12 @@ module ARII
|
|
38
38
|
# If not on cache, add to payload for processing
|
39
39
|
#
|
40
40
|
if @cache[:cache][:status] == 100 then
|
41
|
-
ARII::Config.log.info(self.class.name) {"Not on cache, generating payload"}
|
41
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
42
42
|
# add row data to payload from selectors (key => key, value => column name)
|
43
43
|
payload = Hash.new
|
44
44
|
object[:selectors].each do |selector|
|
45
45
|
|
46
|
-
selector.each do |k,v|
|
46
|
+
selector.each do |k, v|
|
47
47
|
element.xpath(v).each do |el|
|
48
48
|
payload[k] = el.content
|
49
49
|
end
|
@@ -56,7 +56,7 @@ module ARII
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
rescue Exception => e
|
59
|
-
ARII::Config.log.error(self.class.name) {"Processing error: #{e}"}
|
59
|
+
ARII::Config.log.error(self.class.name) { "Processing error: #{e}" }
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
data/lib/arii/xmlseedreader.rb
CHANGED
@@ -17,7 +17,7 @@ module ARII
|
|
17
17
|
@doc.xpath(@seed[:payload][:query]).each do |element|
|
18
18
|
begin
|
19
19
|
object = @help.deep_copy @agent[:payload]
|
20
|
-
object.each_pair do |key,value|
|
20
|
+
object.each_pair do |key, value|
|
21
21
|
variables = @help.identify_variables(object[key])
|
22
22
|
variables.each do |v|
|
23
23
|
element.xpath(@seed[:payload][:selectors][v]).each do |el|
|
data/lib/arii.rb
CHANGED
@@ -11,33 +11,32 @@ require 'arii/version'
|
|
11
11
|
require 'arii/client'
|
12
12
|
|
13
13
|
module ARII
|
14
|
-
|
14
|
+
class Config
|
15
15
|
|
16
16
|
|
17
|
+
def self.set_log log
|
18
|
+
@@log = log
|
19
|
+
end
|
17
20
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
+
def self.set_host host
|
22
|
+
host << '/' unless host.end_with?('/')
|
23
|
+
@@host = host
|
24
|
+
end
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
+
def self.set_access_token api_key
|
27
|
+
@@access_token = api_key
|
28
|
+
end
|
26
29
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
def self.log
|
31
|
+
@@log
|
32
|
+
end
|
30
33
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
+
def self.host
|
35
|
+
@@host
|
36
|
+
end
|
34
37
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
def self.access_token
|
40
|
-
@@access_token
|
41
|
-
end
|
42
|
-
end
|
38
|
+
def self.access_token
|
39
|
+
@@access_token
|
40
|
+
end
|
41
|
+
end
|
43
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arii
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Lopes
|
@@ -84,14 +84,14 @@ dependencies:
|
|
84
84
|
name: spreadsheet
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|