logicmonitor_simple 0.1.2 → 0.1.3

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.
Files changed (2) hide show
  1. data/lib/logicmonitor_simple.rb +35 -30
  2. metadata +3 -4
@@ -3,7 +3,7 @@
3
3
  # Simple LogicMonitor API library - a spartan wrapper around the LogicMonitor API
4
4
  #
5
5
  # Author: Michael Mittelstadt (<meek@getsatisfaction.com>)
6
- # Version: 0.1.2
6
+ # Version: 0.1.3
7
7
  #
8
8
  # Usage:
9
9
  #
@@ -21,38 +21,43 @@ require 'multi_json'
21
21
  require 'cgi'
22
22
 
23
23
  module Logicmonitor
24
- class Simple
25
- def initialize(domain, username, password)
26
- @domain = domain
27
- @username = username
28
- @password = password
29
- @cookies = []
30
- self.sign_in({ 'c' => @domain, 'u' => @username, 'p' => @password })
31
- end
32
-
33
- def method_missing(method, *args)
34
- method = method.to_s.split('_').each_with_index.map { |e,i| i>0 ? e.capitalize : e }.join
35
- http_args = args[0].to_camelback_keys.map do |k,v|
36
- if v.is_a? Array
37
- v = v.join(',')
38
- end
39
- "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
40
- end.join('&') rescue ""
41
- g = Curl.get("https://#{@domain}.logicmonitor.com/santaba/rpc/#{method}?#{http_args}") do |http|
42
- if @cookies.size > 0
43
- http.headers['Cookie'] = @cookies.join('; ')
44
- end
45
- end
24
+ class Simple
46
25
 
47
- if @cookies.empty?
48
- @cookies = g.header_str.scan(/^Set-Cookie: ([^\r]+)?\r/m)
49
- end
26
+ def auth_credentials
27
+ { 'c' => @domain, 'u' => @username, 'p' => @password }
28
+ end
50
29
 
51
- if g.status.to_i > 399
52
- raise "Received unexpected HTTP status #{g.status} Response Body: #{g.body_str}"
53
- end
30
+ def initialize(domain, username, password)
31
+ @domain = domain
32
+ @username = username
33
+ @password = password
34
+ @cookies = []
35
+ end
54
36
 
55
- MultiJson.decode(g.body_str) or raise Logicmonitor::Simple::Error "Received invalid JSON from LogicMonitor"
37
+ def method_missing(method, *args)
38
+ method = method.to_s.split('_').each_with_index.map { |e,i| i>0 ? e.capitalize : e }.join
39
+ http_args = (args[0] || {}).merge(auth_credentials).to_camelback_keys.map do |k,v|
40
+ if v.is_a? Array
41
+ v = v.join(',')
56
42
  end
43
+ "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"
44
+ end.join('&')
45
+
46
+ g = Curl.get("https://#{@domain}.logicmonitor.com/santaba/rpc/#{method}?#{http_args}") do |http|
47
+ if @cookies.size > 0
48
+ http.headers['Cookie'] = @cookies.join('; ')
49
+ end
50
+ end
51
+
52
+ if @cookies.empty?
53
+ @cookies = g.header_str.scan(/^Set-Cookie: ([^\r]+)?\r/m)
54
+ end
55
+
56
+ if g.status.to_i > 399
57
+ raise "Received unexpected HTTP status #{g.status} Response Body: #{g.body_str}"
58
+ end
59
+
60
+ MultiJson.decode(g.body_str) or raise Logicmonitor::Simple::Error 'Received invalid JSON from LogicMonitor'
57
61
  end
62
+ end
58
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logicmonitor_simple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
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-09-16 00:00:00.000000000 Z
12
+ date: 2014-08-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: curb
@@ -88,9 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubyforge_project:
91
- rubygems_version: 1.8.25
91
+ rubygems_version: 1.8.23
92
92
  signing_key:
93
93
  specification_version: 3
94
94
  summary: Simple API client for LogicMonitor
95
95
  test_files: []
96
- has_rdoc: