i2x 0.0.3 → 0.0.4
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/i2x.gemspec +5 -1
- data/lib/i2x/agent.rb +106 -0
- data/lib/i2x/cashier.rb +9 -51
- data/lib/i2x/client.rb +40 -3
- data/lib/i2x/csvdetector.rb +6 -6
- data/lib/i2x/detector.rb +5 -5
- data/lib/i2x/helper.rb +0 -1
- data/lib/i2x/jsondetector.rb +6 -6
- data/lib/i2x/seedreader.rb +1 -1
- data/lib/i2x/sqldetector.rb +1 -1
- data/lib/i2x/sqlseedreader.rb +0 -1
- data/lib/i2x/version.rb +1 -1
- data/lib/i2x/xmldetector.rb +4 -4
- data/lib/i2x.rb +15 -3
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aeb7e0cf94104c029d30e1202b2dedd3241613b7
|
4
|
+
data.tar.gz: 25dbf9cc1bf9ea0f1ffcadc8c69d2676d6e11569
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e4a6bf452b40dc35d13e7f1d79d0b829c0b490d26582b28b6f2360aa34abea28dd4c7c71d7e2d71ac2418d411e6f16f80c955271510173ec02f7075e5267be6
|
7
|
+
data.tar.gz: f5d5f737ae6fdfb520d1e5e8275a8f34bf9833365367d0d97e02189f3f6dbbde5bb1e0f369e76695253649afbdcc84fc39e8540dc4baaa61d76fd9fd3ec29980
|
data/i2x.gemspec
CHANGED
@@ -16,6 +16,10 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
|
+
|
19
20
|
spec.add_development_dependency "bundler", "~> 1.5"
|
20
|
-
spec.add_development_dependency "rake"
|
21
|
+
spec.add_development_dependency "rake", '~> 0'
|
22
|
+
|
23
|
+
spec.add_runtime_dependency 'rest-client', '~> 0'
|
24
|
+
spec.add_runtime_dependency 'nokogiri'
|
21
25
|
end
|
data/lib/i2x/agent.rb
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
#require 'detector'
|
2
|
+
#require 'csvdetector'
|
3
|
+
#require 'jsondetector'
|
4
|
+
#require 'xmldetector'
|
5
|
+
#require 'sqldetector'
|
6
|
+
|
7
|
+
module I2X
|
8
|
+
class Agent
|
9
|
+
attr_accessor :content
|
10
|
+
attr_accessor :identifier
|
11
|
+
attr_accessor :publisher
|
12
|
+
attr_accessor :payload
|
13
|
+
attr_accessor :templates
|
14
|
+
|
15
|
+
def initialize agent
|
16
|
+
begin
|
17
|
+
identifier = agent[:identifier]
|
18
|
+
publisher = agent[:publisher]
|
19
|
+
@payload = agent[:payload]
|
20
|
+
templates = agent[:template]
|
21
|
+
rescue Exception => e
|
22
|
+
p '[i2x] unable to initialize agent. ' + e.to_str
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
##
|
29
|
+
# => Perform the actual agent monitoring tasks.
|
30
|
+
#
|
31
|
+
def execute
|
32
|
+
@checkup = {}
|
33
|
+
|
34
|
+
case publisher
|
35
|
+
when 'sql'
|
36
|
+
begin
|
37
|
+
@d = I2X::SQLDetector.new(identifier)
|
38
|
+
rescue Exception => e
|
39
|
+
@response = {:status => 400, :error => e}
|
40
|
+
p '[i2x] error: ' + e.to_str
|
41
|
+
end
|
42
|
+
when 'csv'
|
43
|
+
begin
|
44
|
+
@d = I2X::CSVDetector.new(identifier)
|
45
|
+
rescue Exception => e
|
46
|
+
@response = {:status => 400, :error => e}
|
47
|
+
p '[i2x] error: ' + e.to_str
|
48
|
+
end
|
49
|
+
when 'xml'
|
50
|
+
begin
|
51
|
+
@d = I2X::XMLDetector.new(identifier)
|
52
|
+
rescue Exception => e
|
53
|
+
@response = {:status => 400, :error => e}
|
54
|
+
p '[i2x] error: ' + e.to_str
|
55
|
+
end
|
56
|
+
when 'json'
|
57
|
+
begin
|
58
|
+
@d = I2X::JSONDetector.new(identifier)
|
59
|
+
rescue Exception => e
|
60
|
+
@response = {:status => 400, :error => e}
|
61
|
+
p '[i2x] error: ' + e.to_str
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
# Start checkup
|
67
|
+
begin
|
68
|
+
unless content.nil? then
|
69
|
+
@d.content = content
|
70
|
+
end
|
71
|
+
update_check_at Time.now
|
72
|
+
@checkup = @d.checkup
|
73
|
+
rescue Exception => e
|
74
|
+
p '[i2x] error: ' + e.to_str
|
75
|
+
end
|
76
|
+
|
77
|
+
# Start detection
|
78
|
+
begin
|
79
|
+
@d.objects.each do |object|
|
80
|
+
@d.detect object
|
81
|
+
end
|
82
|
+
rescue Exception => e
|
83
|
+
p '[i2x] error: ' + e.to_str
|
84
|
+
end
|
85
|
+
|
86
|
+
begin
|
87
|
+
if @checkup[:status] == 100 then
|
88
|
+
process @checkup
|
89
|
+
end
|
90
|
+
rescue Exception => e
|
91
|
+
p '[i2x] error: ' + e.to_str
|
92
|
+
end
|
93
|
+
response = {:status => @checkup[:status], :message => "[i2x][Checkup][execute] All OK."}
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
##
|
99
|
+
# => Process agent checks.
|
100
|
+
#
|
101
|
+
def process checkup
|
102
|
+
p checkup
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
data/lib/i2x/cashier.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
require '
|
1
|
+
require 'rest_client'
|
2
|
+
require 'open-uri'
|
2
3
|
|
3
4
|
|
4
|
-
module
|
5
|
+
module I2X
|
5
6
|
class Cashier
|
6
7
|
|
7
8
|
|
@@ -18,58 +19,15 @@ module Services
|
|
18
19
|
# - *seed*: seed data (if available)
|
19
20
|
#
|
20
21
|
def self.verify memory, agent, payload, seed
|
21
|
-
|
22
|
-
# => Redis implementation, use cache.
|
23
|
-
#
|
22
|
+
|
24
23
|
begin
|
25
|
-
|
26
|
-
# if Redis is enabled...
|
27
|
-
if ENV["CACHE_REDIS"] then
|
28
|
-
# give me some cache!
|
29
|
-
@redis = Redis.new :host => ENV["CACHE_HOST"], :port => ENV["CACHE_PORT"]
|
30
|
-
end
|
24
|
+
response = RestClient.post "#{I2X::Config.host}fluxcapacitor/verify.json", {:access_token => I2X::Config.access_token, :agent => agent, :memory => memory, :payload => payload, :seed => seed}
|
31
25
|
rescue Exception => e
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
# the actual verification
|
36
|
-
if ENV["CACHE_REDIS"] then
|
37
|
-
# commented, do not log all cache verifications
|
38
|
-
#Services::Slog.debug({:message => "Verifying cache", :module => "Cashier", :task => "cache", :extra => {:agent => agent[:identifier], :memory => memory, :payload => payload, :seed => seed}})
|
39
|
-
begin
|
40
|
-
if @redis.hexists("#{agent[:identifier]}:#{seed}","#{memory}") then
|
41
|
-
response = {:status => 200, :message => "[i2x][Cashier] Nothing to update"}
|
42
|
-
else
|
43
|
-
@redis.hset("#{agent[:identifier]}:#{seed}", "#{memory}", payload)
|
44
|
-
response = {:status => 100, :message => "[i2x][Cashier] Memory recorded to cache"}
|
45
|
-
end
|
46
|
-
rescue Exception => e
|
47
|
-
response = {:message => "[i2x][Cashier] unable to verify cache content, #{e}", :status => 301}
|
48
|
-
Services::Slog.exception e
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
##
|
53
|
-
# => SQL implementation, use internal database.
|
54
|
-
#
|
55
|
-
# => To Do: Recheck implementation.
|
56
|
-
#
|
57
|
-
if ENV["CACHE_INTERNAL"] then
|
58
|
-
results = Cache.where memory: memory, agent_id: agent.id, seed: seed
|
59
|
-
if results.size == 0 then
|
60
|
-
begin
|
61
|
-
@cached = Cache.new({:memory => memory, :agent_id => agent.id, :payload => payload, :seed => seed})
|
62
|
-
@cached.save
|
63
|
-
response = {:status => 100, :message => "[i2x][Cashier] Memory recorded to cache"}
|
64
|
-
rescue Exception => e
|
65
|
-
response = {:message => "[i2x][Cashier] unable to save new cache content, #{e}", :status => 300}
|
66
|
-
Services::Slog.exception e
|
67
|
-
end
|
68
|
-
else
|
69
|
-
response = {:status => 200, :message => "[i2x][Cashier] Nothing to update"}
|
70
|
-
end
|
71
|
-
|
26
|
+
response = {:status => 400}
|
72
27
|
end
|
28
|
+
|
29
|
+
|
30
|
+
|
73
31
|
|
74
32
|
response
|
75
33
|
end
|
data/lib/i2x/client.rb
CHANGED
@@ -1,13 +1,50 @@
|
|
1
|
+
require 'rest_client'
|
2
|
+
|
1
3
|
module I2X
|
2
4
|
class Client
|
3
5
|
|
6
|
+
##
|
7
|
+
# => Load configuration properties from client/script code
|
8
|
+
#
|
4
9
|
def initialize config
|
5
|
-
|
10
|
+
begin
|
11
|
+
@config = config
|
12
|
+
I2X::Config.set_access_token @config[:server][:api_key]
|
13
|
+
I2X::Config.set_host @config[:server][:host]
|
14
|
+
p '[i2x] loaded configuration'
|
15
|
+
rescue Exception => e
|
16
|
+
p '[i2x] Failed to load configuration' + e.to_str
|
17
|
+
end
|
6
18
|
|
7
19
|
end
|
8
20
|
|
9
|
-
|
10
|
-
|
21
|
+
##
|
22
|
+
# => Validate API key.
|
23
|
+
#
|
24
|
+
def validate
|
25
|
+
begin
|
26
|
+
p '[i2x] launching validation.'
|
27
|
+
@config[:server][:host] << '/' unless @config[:server][:host].ends_with?('/')
|
28
|
+
out = RestClient.post "#{@config[:server][:host]}fluxcapacitor/validate_key.json", {:access_token => @config[:server][:api_key]}
|
29
|
+
response = {:status => 100, :response => out.to_str}
|
30
|
+
rescue Exception => e
|
31
|
+
p '[i2x] validation failed. ' + e.to_str
|
32
|
+
end
|
33
|
+
response
|
34
|
+
end
|
35
|
+
|
36
|
+
##
|
37
|
+
# => Start processing agents from configuration properties.
|
38
|
+
#
|
39
|
+
def process
|
40
|
+
begin
|
41
|
+
@config[:agents].each do |agent|
|
42
|
+
a = I2X::Agent.new agent
|
43
|
+
a.execute
|
44
|
+
end
|
45
|
+
rescue Exception => e
|
46
|
+
p '[i2x] agent processing failed. ' + e.to_str
|
47
|
+
end
|
11
48
|
end
|
12
49
|
end
|
13
50
|
end
|
data/lib/i2x/csvdetector.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
require 'helper'
|
1
|
+
#require 'helper'
|
2
2
|
require 'csv'
|
3
3
|
require 'open-uri'
|
4
|
-
require 'seedreader'
|
5
|
-
require 'csvseedreader'
|
6
|
-
require 'sqlseedreader'
|
7
|
-
require 'xmlseedreader'
|
8
|
-
require 'jsonseedreader'
|
4
|
+
#require 'seedreader'
|
5
|
+
#require 'csvseedreader'
|
6
|
+
#require 'sqlseedreader'
|
7
|
+
#require 'xmlseedreader'
|
8
|
+
#require 'jsonseedreader'
|
9
9
|
|
10
10
|
module I2X
|
11
11
|
|
data/lib/i2x/detector.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require 'seedreader'
|
2
|
-
require 'csvseedreader'
|
3
|
-
require 'sqlseedreader'
|
4
|
-
require 'xmlseedreader'
|
5
|
-
require 'jsonseedreader'
|
1
|
+
#require 'seedreader'
|
2
|
+
#require 'csvseedreader'
|
3
|
+
#require 'sqlseedreader'
|
4
|
+
#require 'xmlseedreader'
|
5
|
+
#require 'jsonseedreader'
|
6
6
|
|
7
7
|
|
8
8
|
module I2X
|
data/lib/i2x/helper.rb
CHANGED
data/lib/i2x/jsondetector.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require 'helper'
|
1
|
+
#require 'helper'
|
2
2
|
require 'open-uri'
|
3
3
|
require 'jsonpath'
|
4
4
|
require 'rest-client'
|
5
5
|
require 'csv'
|
6
6
|
require 'json'
|
7
|
-
require 'seedreader'
|
8
|
-
require 'csvseedreader'
|
9
|
-
require 'sqlseedreader'
|
10
|
-
require 'xmlseedreader'
|
11
|
-
require 'jsonseedreader'
|
7
|
+
#require 'seedreader'
|
8
|
+
#require 'csvseedreader'
|
9
|
+
#require 'sqlseedreader'
|
10
|
+
#require 'xmlseedreader'
|
11
|
+
#require 'jsonseedreader'
|
12
12
|
|
13
13
|
module I2X
|
14
14
|
|
data/lib/i2x/seedreader.rb
CHANGED
data/lib/i2x/sqldetector.rb
CHANGED
data/lib/i2x/sqlseedreader.rb
CHANGED
data/lib/i2x/version.rb
CHANGED
data/lib/i2x/xmldetector.rb
CHANGED
data/lib/i2x.rb
CHANGED
@@ -1,6 +1,18 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
current_folder = File.expand_path('../', __FILE__)
|
2
|
+
Dir["#{current_folder}/i2x/*.rb"].each {|f| require f}
|
3
3
|
|
4
4
|
module I2X
|
5
|
-
|
5
|
+
class Config
|
6
|
+
attr_accessor :access_token
|
7
|
+
attr_accessor :host
|
8
|
+
|
9
|
+
def self.set_host host
|
10
|
+
host << '/' unless host.ends_with?('/')
|
11
|
+
@@host = host
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.set_access_token api_key
|
15
|
+
@@access_token = api_key
|
16
|
+
end
|
17
|
+
end
|
6
18
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i2x
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Lopes
|
@@ -28,11 +28,39 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: nokogiri
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
66
|
- - ">="
|
@@ -53,6 +81,7 @@ files:
|
|
53
81
|
- Rakefile
|
54
82
|
- i2x.gemspec
|
55
83
|
- lib/i2x.rb
|
84
|
+
- lib/i2x/agent.rb
|
56
85
|
- lib/i2x/cashier.rb
|
57
86
|
- lib/i2x/checkup.rb
|
58
87
|
- lib/i2x/client.rb
|