prtg 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/prtg.rb CHANGED
@@ -4,6 +4,8 @@ $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
4
4
  require "rubygems"
5
5
  require "#{dir}/prtg/client"
6
6
  require "#{dir}/prtg/query"
7
+ require "#{dir}/prtg/table_query"
8
+ require "#{dir}/prtg/historic_data_query"
7
9
  require "#{dir}/prtg/utils"
8
10
 
9
11
  # This is a wrapper for the api of paessler's prtg monitoring tool.
@@ -14,7 +16,7 @@ require "#{dir}/prtg/utils"
14
16
  # http.verify_mode = OpenSSL::SSL::VERIFY_NONE
15
17
  #
16
18
  # client = Prtg::Client.new(:host => http, :username => "foo", :password => "bar")
17
- # p client.live_data(:sensors)
19
+ # p client.table(:sensors)
18
20
  module Prtg
19
- VERSION = "0.0.5"
21
+ VERSION = "0.1.0"
20
22
  end
data/lib/prtg/client.rb CHANGED
@@ -77,35 +77,17 @@ module Prtg # :nodoc:
77
77
  end
78
78
 
79
79
  def live_data(content)
80
- Prtg::Query.new(self, content)
80
+ warn "[DEPRECATION] Client#live_data is depricated. Please use 'Client#table.content(#{ content }) instead."
81
+ table.content(content)
81
82
  end
82
83
 
83
- def api_request(params)
84
- url_params = Utils.url_params(auth_params.merge(params))
85
-
86
- response = host.get(
87
- "/api/table.xml?#{ url_params }",
88
- { "Accept-Encoding" => "*"}
89
- )
90
-
91
- parse_response(response)
84
+ def table
85
+ Prtg::TableQuery.new(@host, auth_params)
92
86
  end
93
87
 
94
- def method_missing(*args)
95
- super(*args)
88
+ def historicdata
89
+ Prtg::HistoricDataQuery.new(@host, auth_params)
96
90
  end
97
91
 
98
- private
99
-
100
- def parse_response(response)
101
- hash = XmlSimple.xml_in(response.body, "ForceArray" => false)
102
-
103
- if hash["error"]
104
- raise hash["error"]
105
-
106
- else
107
- hash["item"]
108
- end
109
- end
110
92
  end
111
93
  end
@@ -0,0 +1,16 @@
1
+ require "prtg/query"
2
+
3
+ module Prtg # :nodoc
4
+
5
+ # Proxy class to caspule request
6
+ class HistoricDataQuery
7
+
8
+ include Prtg::Query
9
+
10
+ api_url '/api/historicdata.xml'
11
+
12
+ VALUES = [:id, :sdate, :edate, :avg]
13
+ VALUES.each { |k| api_value k }
14
+
15
+ end
16
+ end
data/lib/prtg/query.rb CHANGED
@@ -1,60 +1,81 @@
1
1
  module Prtg # :nodoc:
2
2
 
3
- # Proxy class to caspule request
4
- class Query
3
+ module Query
5
4
 
6
- # BlankSlate
7
- instance_methods.each { |m| undef_method m unless m =~ /^(__|send|object_id)/ }
5
+ module ClassMethods
8
6
 
9
- def initialize(client, content)
10
- @prtg_client = client
11
- @query_hash = {}
12
- @query_hash[:output] = :xml
13
- @query_hash[:content] = content
14
- end
7
+ def api_url(url)
8
+ define_method(:api_url) { url }
9
+ end
15
10
 
16
- # This single values for the query.
17
- # They are pretty much like sql.
18
- #
19
- # content is like a table
20
- # count is like LIMIT
21
- # start is like OFFSET
22
- VALUES = [:count, :start, :output, :id]
23
-
24
- VALUES.each do |key|
25
- define_method key do |value|
26
- @query_hash[key] = value
27
- self
11
+ def api_value(name)
12
+ define_method name do |value|
13
+ @query[name] = value
14
+ self
15
+ end
16
+ end
17
+
18
+ def api_list(name)
19
+ define_method name do |*args|
20
+ @query[name] = (@query[name] || []) | args
21
+ self
22
+ end
28
23
  end
24
+
29
25
  end
30
26
 
31
- MULTIPLE_VALUES = [:columns]
27
+ module InstanceMethods
28
+
29
+ def initialize(host, auth_params={})
30
+ @host = host
31
+ @query = {}.merge(auth_params)
32
+ @query[:output] = :xml
33
+ end
32
34
 
33
- MULTIPLE_VALUES.each do |key|
34
- define_method key do |*args|
35
- @query_hash[key] = (@query_hash[key] || []) | args
35
+ def execute
36
+ url_params = Utils.url_params(@query)
37
+
38
+ parse_response @host.get(
39
+ "#{ api_url }?#{ url_params }",
40
+ { "Accept-Encoding" => "*"}
41
+ )
42
+ end
43
+
44
+ def add_filter(name, value)
45
+ @query[name.to_sym] = value
36
46
  self
37
47
  end
38
- end
39
48
 
40
- def execute
41
- @prtg_client.api_request(@query_hash)
42
- end
49
+ def method_missing(*args, &block)
50
+ if args.first.to_s.start_with? "filter"
51
+ add_filter(*args)
52
+ else
53
+ execute.send(*args, &block)
54
+ end
55
+ end
43
56
 
44
- private
57
+ private
45
58
 
46
- def add_filter(name, value)
47
- @query_hash[name.to_sym] = value
48
- self
49
- end
59
+ def parse_response(response)
60
+ hash = XmlSimple.xml_in(response.body, "ForceArray" => false)
50
61
 
51
- def method_missing(*args, &block)
52
- if args.first.to_s.start_with? "filter"
53
- add_filter(*args)
54
- else
55
- execute.send(*args, &block)
56
- end
57
- end
62
+ if hash["error"]
63
+ raise hash["error"]
64
+
65
+ else
66
+ hash["item"]
67
+ end
68
+ end
69
+ end
70
+
71
+ def self.included(receiver)
72
+ receiver.class_exec do
73
+ # BlankSlate
74
+ instance_methods.each { |m| undef_method m unless m =~ /^(__|send|object_id)/ }
75
+ end
76
+ receiver.extend ClassMethods
77
+ receiver.send :include, InstanceMethods
78
+ end
58
79
 
59
80
  end
60
81
  end
@@ -0,0 +1,18 @@
1
+ require "prtg/query"
2
+ module Prtg # :nodoc:
3
+
4
+ # Proxy class to caspule request
5
+ class TableQuery
6
+
7
+ include Prtg::Query
8
+
9
+ api_url '/api/table.xml'
10
+
11
+ VALUES = [:content, :count, :start, :output, :id]
12
+ VALUES.each { |k| api_value k }
13
+
14
+ MULTIPLE_VALUES = [:columns]
15
+ MULTIPLE_VALUES.each { |k| api_list k }
16
+
17
+ end
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prtg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-08 00:00:00.000000000 Z
12
+ date: 2014-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xml-simple
@@ -27,7 +27,7 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 1.1.1
30
- description: This gem is a wrapper around the prth http api.Prtg is an network monitoring
30
+ description: This gem is a wrapper around the prtg http api.Prtg is an network monitoring
31
31
  solution which provides a api to retrieve several information about monitored devices.
32
32
  email: k@kanello.de
33
33
  executables: []
@@ -38,6 +38,8 @@ files:
38
38
  - lib/prtg/query.rb
39
39
  - lib/prtg/client.rb
40
40
  - lib/prtg/utils.rb
41
+ - lib/prtg/historic_data_query.rb
42
+ - lib/prtg/table_query.rb
41
43
  homepage: http://github.com/ikaros/Prtg-for-Ruby
42
44
  licenses: []
43
45
  post_install_message:
@@ -63,3 +65,4 @@ signing_key:
63
65
  specification_version: 3
64
66
  summary: Wrapper for the prtg network monitor api (http://www.paessler.com/prtg)
65
67
  test_files: []
68
+ has_rdoc: