i2x 0.0.3 → 0.0.4

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
  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