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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 335a577dfae00f0024b44efe43882721190a5397
4
- data.tar.gz: 0ea51a5523b9f0a2b52b001ff853b5219b0a5cbc
3
+ metadata.gz: aeb7e0cf94104c029d30e1202b2dedd3241613b7
4
+ data.tar.gz: 25dbf9cc1bf9ea0f1ffcadc8c69d2676d6e11569
5
5
  SHA512:
6
- metadata.gz: b835461966de12b01bb793e512d105f48186408f08529e0b163ff14cd39d7580d9c2215b023b3474dc00d614141bd4140221bdd262dcd69560b525fd35ab87ec
7
- data.tar.gz: fb868fdbe8c44735db9d2b831343d90e2a8d2fc71dd1c3460917bad87545c873222c1e65494249da1439943b6aa7a7390c9ea0ae27b1da342bea9fa226bbce65
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 'slog'
1
+ require 'rest_client'
2
+ require 'open-uri'
2
3
 
3
4
 
4
- module Services
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
- Services::Slog.exception e
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
- @config = config
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
- def ping
10
- p "PONGING #{@config[:server][:host]}"
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
@@ -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
@@ -1,4 +1,3 @@
1
- require 'slog'
2
1
 
3
2
  module I2X
4
3
 
@@ -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
 
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ #require 'helper'
2
2
 
3
3
  module I2X
4
4
 
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ #require 'helper'
2
2
  require 'mysql2'
3
3
 
4
4
  module I2X
@@ -1,4 +1,3 @@
1
- require 'slog'
2
1
  require 'mysql2'
3
2
 
4
3
  module Services
data/lib/i2x/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module I2X
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,8 +1,8 @@
1
- require 'helper'
2
- require 'cashier'
1
+ #require 'helper'
2
+ #require 'cashier'
3
3
  require 'open-uri'
4
- require 'raven'
5
- require 'slog'
4
+ #require 'raven'
5
+ #require 'slog'
6
6
 
7
7
  module I2X
8
8
 
data/lib/i2x.rb CHANGED
@@ -1,6 +1,18 @@
1
- require_relative "./i2x/version"
2
- require_relative "./i2x/client"
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.3
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