pixeltrix-prowler 1.0.1 → 1.0.2
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.
- data/CHANGELOG +15 -0
- data/INSTALL +2 -3
- data/README +2 -3
- data/VERSION +1 -1
- data/lib/prowler.rb +33 -11
- data/prowler.gemspec +4 -3
- data/test/prowler_test.rb +46 -17
- metadata +3 -2
data/CHANGELOG
ADDED
data/INSTALL
CHANGED
@@ -14,8 +14,7 @@ CONFIGURATION
|
|
14
14
|
You should have something like this in config/initializers/prowler.rb.
|
15
15
|
|
16
16
|
Prowler.configure do |config|
|
17
|
-
config.
|
18
|
-
config.password = 'password'
|
17
|
+
config.api_key = 'ffffffffffffffffffffffffffffffffffffffff'
|
19
18
|
config.application = 'www.example.com'
|
20
19
|
end
|
21
20
|
|
@@ -31,7 +30,7 @@ USAGE
|
|
31
30
|
|
32
31
|
To use Prowler within your application just call the notify method, e.g.
|
33
32
|
|
34
|
-
Prowler.notify "Event", "Description"
|
33
|
+
Prowler.notify "Event", "Description", Prowler::Priority::NORMAL
|
35
34
|
|
36
35
|
ABOUT
|
37
36
|
|
data/README
CHANGED
@@ -14,8 +14,7 @@ CONFIGURATION
|
|
14
14
|
You should have something like this in config/initializers/prowler.rb.
|
15
15
|
|
16
16
|
Prowler.configure do |config|
|
17
|
-
config.
|
18
|
-
config.password = 'password'
|
17
|
+
config.api_key = 'ffffffffffffffffffffffffffffffffffffffff'
|
19
18
|
config.application = 'www.example.com'
|
20
19
|
end
|
21
20
|
|
@@ -31,7 +30,7 @@ USAGE
|
|
31
30
|
|
32
31
|
To use Prowler within your application just call the notify method, e.g.
|
33
32
|
|
34
|
-
Prowler.notify "Event", "Description"
|
33
|
+
Prowler.notify "Event", "Description", Prowler::Priority::NORMAL
|
35
34
|
|
36
35
|
ABOUT
|
37
36
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
data/lib/prowler.rb
CHANGED
@@ -11,8 +11,7 @@
|
|
11
11
|
# You should have something like this in config/initializers/prowler.rb.
|
12
12
|
#
|
13
13
|
# Prowler.configure do |config|
|
14
|
-
# config.
|
15
|
-
# config.password = 'password'
|
14
|
+
# config.api_key = 'ffffffffffffffffffffffffffffffffffffffff'
|
16
15
|
# config.application = 'www.example.com'
|
17
16
|
# end
|
18
17
|
#
|
@@ -28,7 +27,7 @@
|
|
28
27
|
#
|
29
28
|
# To use Prowler within your application just call the notify method, e.g.
|
30
29
|
#
|
31
|
-
# Prowler.notify "Event", "Description"
|
30
|
+
# Prowler.notify "Event", "Description", Prowler::Priority::NORMAL
|
32
31
|
#
|
33
32
|
# === About
|
34
33
|
#
|
@@ -44,9 +43,18 @@ require 'net/http'
|
|
44
43
|
require 'net/https'
|
45
44
|
|
46
45
|
module Prowler
|
46
|
+
|
47
|
+
module Priority
|
48
|
+
VERY_LOW = -2
|
49
|
+
MODERATE = -1
|
50
|
+
NORMAL = 0
|
51
|
+
HIGH = 1
|
52
|
+
EMERGENCY = 2
|
53
|
+
end
|
54
|
+
|
47
55
|
class << self
|
48
56
|
attr_accessor :host, :port, :secure
|
49
|
-
attr_accessor :username, :password
|
57
|
+
attr_accessor :api_key, :username, :password
|
50
58
|
attr_accessor :application, :send_notifications
|
51
59
|
|
52
60
|
# The host to connect to.
|
@@ -69,6 +77,11 @@ module Prowler
|
|
69
77
|
yield self
|
70
78
|
end
|
71
79
|
|
80
|
+
def username=(value) #:nodoc:
|
81
|
+
logger.warn "The username/password API has been deprecated please switch to using an API key."
|
82
|
+
@username = value
|
83
|
+
end
|
84
|
+
|
72
85
|
# Whether to send notifications
|
73
86
|
def send_notifications
|
74
87
|
@send_notifications.nil? ? true : !!@send_notifications
|
@@ -77,15 +90,19 @@ module Prowler
|
|
77
90
|
|
78
91
|
# Reset configuration
|
79
92
|
def reset_configuration
|
80
|
-
@host = @port = @secure = @application = @username = @password = nil
|
93
|
+
@host = @port = @secure = @application = @username = @password = @api_key = nil
|
81
94
|
end
|
82
95
|
|
83
96
|
# Whether the library has been configured
|
84
97
|
def configured?
|
85
|
-
|
98
|
+
!@application.nil? && (!@api_key.nil? || !(@username.nil? || @password.nil?))
|
86
99
|
end
|
87
100
|
|
88
101
|
def path(*params) #:nodoc:
|
102
|
+
sprintf("/publicapi/add?apikey=%s&priority=%d&application=%s&event=%s&description=%s", *params)
|
103
|
+
end
|
104
|
+
|
105
|
+
def deprecated_path(*params) #:nodoc:
|
89
106
|
sprintf("/api/add_notification.php?application=%s&event=%s&description=%s", *params)
|
90
107
|
end
|
91
108
|
|
@@ -97,9 +114,10 @@ module Prowler
|
|
97
114
|
end
|
98
115
|
|
99
116
|
# Send a notification to your iPhone:
|
100
|
-
# * event:
|
101
|
-
# * message:
|
102
|
-
|
117
|
+
# * event: The title of notification you want to send.
|
118
|
+
# * message: The text of the notification message you want to send.
|
119
|
+
# * priority: The priority of the notification - see Prowler::Priority. (Optional)
|
120
|
+
def notify(event, message, priority = Priority::NORMAL)
|
103
121
|
raise RuntimeError, "Prowler needs to be configured first before using it" unless configured?
|
104
122
|
|
105
123
|
http = Net::HTTP.new(host, port)
|
@@ -111,8 +129,12 @@ module Prowler
|
|
111
129
|
}
|
112
130
|
http.read_timeout = 5 # seconds
|
113
131
|
http.open_timeout = 2 # seconds
|
114
|
-
|
115
|
-
|
132
|
+
if api_key
|
133
|
+
request = Net::HTTP::Get.new(path(api_key, priority, URI.escape(application), URI.escape(event), URI.escape(message)), headers)
|
134
|
+
else
|
135
|
+
request = Net::HTTP::Get.new(deprecated_path(URI.escape(application), URI.escape(event), URI.escape(message)), headers)
|
136
|
+
request.basic_auth(username, password)
|
137
|
+
end
|
116
138
|
response = begin
|
117
139
|
http.request(request) if send_notifications?
|
118
140
|
rescue TimeoutError => e
|
data/prowler.gemspec
CHANGED
@@ -2,18 +2,19 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{prowler}
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Andrew White"]
|
9
|
-
s.date = %q{2009-07-
|
9
|
+
s.date = %q{2009-07-08}
|
10
10
|
s.description = %q{A simple wrapper class that provides basic access to the Prowl API.}
|
11
11
|
s.email = %q{andyw@pixeltrix.co.uk}
|
12
12
|
s.extra_rdoc_files = [
|
13
13
|
"README"
|
14
14
|
]
|
15
15
|
s.files = [
|
16
|
-
"
|
16
|
+
"CHANGELOG",
|
17
|
+
"INSTALL",
|
17
18
|
"MIT-LICENSE",
|
18
19
|
"README",
|
19
20
|
"Rakefile",
|
data/test/prowler_test.rb
CHANGED
@@ -16,17 +16,15 @@ class ProwlerTest < Test::Unit::TestCase
|
|
16
16
|
config.host = "prowler"
|
17
17
|
config.port = 666
|
18
18
|
config.secure = false
|
19
|
+
config.api_key = "apikey"
|
19
20
|
config.application = "application"
|
20
|
-
config.username = "username"
|
21
|
-
config.password = "password"
|
22
21
|
end
|
23
22
|
|
24
23
|
assert_equal "prowler", Prowler.host
|
25
24
|
assert_equal 666, Prowler.port
|
26
25
|
assert_equal false, Prowler.secure
|
26
|
+
assert_equal "apikey", Prowler.api_key
|
27
27
|
assert_equal "application", Prowler.application
|
28
|
-
assert_equal "username", Prowler.username
|
29
|
-
assert_equal "password", Prowler.password
|
30
28
|
end
|
31
29
|
|
32
30
|
should "set a default host" do
|
@@ -45,6 +43,43 @@ class ProwlerTest < Test::Unit::TestCase
|
|
45
43
|
assert_equal nil, Prowler.application
|
46
44
|
end
|
47
45
|
|
46
|
+
should "not set a default API key" do
|
47
|
+
assert_equal nil, Prowler.api_key
|
48
|
+
end
|
49
|
+
|
50
|
+
should "raise an exception if not configured" do
|
51
|
+
assert_raises RuntimeError do
|
52
|
+
Prowler.notify("Event", "Description", Prowler::Priority::NORMAL)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "Prowler deprecated configuration" do
|
58
|
+
setup do
|
59
|
+
Logger.any_instance.stubs(:warn)
|
60
|
+
Prowler.reset_configuration
|
61
|
+
Prowler.send_notifications = false
|
62
|
+
end
|
63
|
+
|
64
|
+
should "be done with a block" do
|
65
|
+
Prowler.configure do |config|
|
66
|
+
config.host = "prowler"
|
67
|
+
config.port = 666
|
68
|
+
config.secure = false
|
69
|
+
config.application = "application"
|
70
|
+
config.username = "username"
|
71
|
+
config.password = "password"
|
72
|
+
end
|
73
|
+
|
74
|
+
assert_equal "username", Prowler.username
|
75
|
+
assert_equal "password", Prowler.password
|
76
|
+
end
|
77
|
+
|
78
|
+
should "log a warning when using the deprecated API" do
|
79
|
+
Logger.any_instance.expects(:warn).with("The username/password API has been deprecated please switch to using an API key.")
|
80
|
+
Prowler.configure { |config| config.username = "username" }
|
81
|
+
end
|
82
|
+
|
48
83
|
should "not set a default username" do
|
49
84
|
assert_equal nil, Prowler.username
|
50
85
|
end
|
@@ -55,7 +90,7 @@ class ProwlerTest < Test::Unit::TestCase
|
|
55
90
|
|
56
91
|
should "raise an exception if not configured" do
|
57
92
|
assert_raises RuntimeError do
|
58
|
-
Prowler.notify
|
93
|
+
Prowler.notify("Event", "Description", Prowler::Priority::NORMAL)
|
59
94
|
end
|
60
95
|
end
|
61
96
|
end
|
@@ -64,34 +99,28 @@ class ProwlerTest < Test::Unit::TestCase
|
|
64
99
|
setup do
|
65
100
|
Prowler.reset_configuration
|
66
101
|
Prowler.configure do |config|
|
102
|
+
config.api_key = "apikey"
|
67
103
|
config.application = "Application Name"
|
68
|
-
config.username = "username"
|
69
|
-
config.password = "password"
|
70
104
|
end
|
71
105
|
Prowler.send_notifications = false
|
72
106
|
end
|
73
107
|
|
74
108
|
should "encode the url parameters" do
|
75
109
|
expectation = Prowler.expects(:path)
|
76
|
-
expectation.with("Application%20Name", "Event%20Name", "Message%20Text")
|
77
|
-
expectation.returns("/
|
78
|
-
Prowler.notify("Event Name", "Message Text")
|
110
|
+
expectation.with("apikey", 0, "Application%20Name", "Event%20Name", "Message%20Text")
|
111
|
+
expectation.returns("/publicapi/add?apikey=apikey&priority=0application=Application%20Name&event=Event%20Name&description=Message%20Text")
|
112
|
+
Prowler.notify("Event Name", "Message Text", Prowler::Priority::NORMAL)
|
79
113
|
end
|
80
114
|
|
81
115
|
should "not verify SSL certificates" do
|
82
116
|
Net::HTTP.any_instance.expects(:use_ssl=).with(true)
|
83
117
|
Net::HTTP.any_instance.expects(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
|
84
|
-
Prowler.notify("Event Name", "Message Text")
|
85
|
-
end
|
86
|
-
|
87
|
-
should "use HTTP Basic Authentication" do
|
88
|
-
Net::HTTP::Get.any_instance.expects(:basic_auth).with(Prowler.username, Prowler.password)
|
89
|
-
Prowler.notify("Event Name", "Message Text")
|
118
|
+
Prowler.notify("Event Name", "Message Text", Prowler::Priority::NORMAL)
|
90
119
|
end
|
91
120
|
|
92
121
|
should "not send notifications if send_notifications is false" do
|
93
122
|
Net::HTTP.any_instance.expects(:request).never
|
94
|
-
Prowler.notify("Event Name", "Message Text")
|
123
|
+
Prowler.notify("Event Name", "Message Text", Prowler::Priority::NORMAL)
|
95
124
|
end
|
96
125
|
end
|
97
126
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pixeltrix-prowler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew White
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-08 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,6 +22,7 @@ extensions: []
|
|
22
22
|
extra_rdoc_files:
|
23
23
|
- README
|
24
24
|
files:
|
25
|
+
- CHANGELOG
|
25
26
|
- INSTALL
|
26
27
|
- MIT-LICENSE
|
27
28
|
- README
|