notification 0.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/CHANGES +6 -0
- data/Manifest.txt +4 -0
- data/README +1 -0
- data/lib/growl_notifier.rb +24 -4
- data/lib/notification.rb +17 -10
- data/lib/popup_notifier.rb +17 -0
- data/lib/snarl_notifier.rb +15 -0
- data/test/notification_test.rb +8 -0
- data/test/popup_notifier_test.rb +15 -0
- metadata +14 -7
data/CHANGES
CHANGED
data/Manifest.txt
CHANGED
@@ -6,8 +6,12 @@ example.rb
|
|
6
6
|
lib/gmail_notifier.rb
|
7
7
|
lib/growl_notifier.rb
|
8
8
|
lib/notification.rb
|
9
|
+
lib/popup_notifier.rb
|
9
10
|
lib/sms_notifier.rb
|
11
|
+
lib/snarl_notifier.rb
|
10
12
|
test/gmail_notifier_test.rb
|
11
13
|
test/growl_notifier_test.rb
|
14
|
+
test/notification_test.rb
|
15
|
+
test/popup_notifier_test.rb
|
12
16
|
test/sms_notifier_test.rb
|
13
17
|
test/test_helper.rb
|
data/README
CHANGED
data/lib/growl_notifier.rb
CHANGED
@@ -1,16 +1,36 @@
|
|
1
1
|
require 'ruby-growl'
|
2
2
|
|
3
3
|
class GrowlNotifier
|
4
|
+
#Valid options:
|
5
|
+
# :application => the name of the application sending the notifications (ruby-growl)
|
6
|
+
# :to => the hostname notifications will send to by default (localhost)
|
7
|
+
# :notifications => an array of names for the different notifications the application can send ([])
|
8
|
+
# :password => the growl network password for the given host (nil)
|
4
9
|
def initialize(options = {})
|
5
10
|
@application = options[:application] || 'ruby-growl'
|
6
|
-
@to = options[:to]
|
11
|
+
@to = options[:to] || 'localhost'
|
12
|
+
@notifications = options[:notifications]
|
13
|
+
@password = options[:password]
|
7
14
|
end
|
8
15
|
|
16
|
+
# Important warning: unless the user has enabled network notifications,
|
17
|
+
# this will throw an error. It's suggested that you catch this error
|
18
|
+
# and entreat your user to enable network notifications in an appropriate fashion.
|
19
|
+
# They probably also need to enable remote application registration.
|
20
|
+
#
|
21
|
+
# Valid options:
|
22
|
+
# :to => the hostname notifications will send to by default (localhost)
|
23
|
+
# :type => the notification type that's being sent ("@application notification")
|
24
|
+
# :password =>
|
9
25
|
def notify(message, options = {})
|
10
|
-
to = options[:to] || @to
|
11
|
-
notification_type = "#{@application} notification"
|
26
|
+
to = options[:to] || @to
|
27
|
+
notification_type = options[:type] || "#{@application} notification"
|
28
|
+
notifications = @notifications || [notification_type]
|
29
|
+
|
30
|
+
#ensures we never get an Unknown Notification error
|
31
|
+
notification_type = notifications.first unless notifications.include?(notification_type)
|
12
32
|
|
13
|
-
g = Growl.new to, @application,
|
33
|
+
g = Growl.new to, @application, notifications, notifications, @password
|
14
34
|
g.notify notification_type, @application, message
|
15
35
|
end
|
16
36
|
end
|
data/lib/notification.rb
CHANGED
@@ -1,16 +1,23 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
1
3
|
module Notification
|
2
|
-
VERSION = "0.
|
3
|
-
end
|
4
|
+
VERSION = "0.2"
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
#this is the preferred place to check if a notification system
|
7
|
+
#is available
|
8
|
+
def self.available_notifiers
|
9
|
+
@available_notifiers ||= []
|
10
|
+
end
|
9
11
|
end
|
10
12
|
|
11
|
-
require 'rubygems'
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
%w(gmail sms growl snarl popup).each do |type|
|
15
|
+
begin
|
16
|
+
type += "_notifier"
|
17
|
+
require type
|
18
|
+
Notification.available_notifiers << type
|
19
|
+
rescue LoadError
|
20
|
+
$stderr.puts "#{type} is not available"
|
21
|
+
end
|
22
|
+
end
|
16
23
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Generalizes the API for growl and snarl
|
2
|
+
# it should be easy to add support for more later.
|
3
|
+
class PopupNotifier
|
4
|
+
def initialize(*params)
|
5
|
+
if Notification.available_notifiers.include?("growl_notifier")
|
6
|
+
@notifier = GrowlNotifier.new(*params)
|
7
|
+
elsif Notification.available_notifiers.include?("snarl_notifier")
|
8
|
+
@notifier = SnarlNotifier.new(*params)
|
9
|
+
else
|
10
|
+
raise LoadError("No popup notification system installed\n Try 'sudo gem install ruby-growl' or 'gem install snarl-growl'")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def notify(*params)
|
15
|
+
@notifier.notify(*params)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'snarl'
|
2
|
+
|
3
|
+
class SnarlNotifier
|
4
|
+
# valid options:
|
5
|
+
# application: the name of your application
|
6
|
+
def initialize(options = {})
|
7
|
+
@application = options[:application] || 'ruby-snarl'
|
8
|
+
end
|
9
|
+
|
10
|
+
#
|
11
|
+
def notify(message, options = {})
|
12
|
+
title = options[:title] || "#{@application} notification"
|
13
|
+
Snarl.show_message(title,message,options[:icon] || nil, options[:timeout] || Snarl::DEFAULT_TIMEOUT)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require "notification"
|
3
|
+
|
4
|
+
class NotificationTest < Test::Unit::TestCase
|
5
|
+
def test_available_notifiers
|
6
|
+
assert_equal ['gmail_notifier', 'sms_notifier', 'growl_notifier', 'popup_notifier'], Notification.available_notifiers
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
require "notification"
|
3
|
+
|
4
|
+
class GrowlNotifierTest < Test::Unit::TestCase
|
5
|
+
def test_default_stuff
|
6
|
+
g = Object.new
|
7
|
+
Growl.expects(:new).returns(g)
|
8
|
+
g.expects(:notify)
|
9
|
+
|
10
|
+
popup = PopupNotifier.new
|
11
|
+
popup.notify('help')
|
12
|
+
|
13
|
+
g.verify
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: notification
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2007-
|
6
|
+
version: "0.2"
|
7
|
+
date: 2007-07-28 00:00:00 -07:00
|
8
8
|
summary: Notification is a one stop shop for notification, it knows how to send messages via GMail, SMS, growl, snarl, etc, and all these are exposed in a simple, uniform way.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -37,19 +37,26 @@ files:
|
|
37
37
|
- lib/gmail_notifier.rb
|
38
38
|
- lib/growl_notifier.rb
|
39
39
|
- lib/notification.rb
|
40
|
+
- lib/popup_notifier.rb
|
40
41
|
- lib/sms_notifier.rb
|
42
|
+
- lib/snarl_notifier.rb
|
41
43
|
- test/gmail_notifier_test.rb
|
42
44
|
- test/growl_notifier_test.rb
|
45
|
+
- test/notification_test.rb
|
46
|
+
- test/popup_notifier_test.rb
|
43
47
|
- test/sms_notifier_test.rb
|
44
48
|
- test/test_helper.rb
|
45
49
|
test_files:
|
46
50
|
- test/gmail_notifier_test.rb
|
47
51
|
- test/growl_notifier_test.rb
|
52
|
+
- test/notification_test.rb
|
53
|
+
- test/popup_notifier_test.rb
|
48
54
|
- test/sms_notifier_test.rb
|
49
|
-
rdoc_options:
|
50
|
-
|
51
|
-
|
52
|
-
|
55
|
+
rdoc_options:
|
56
|
+
- --main
|
57
|
+
- README.txt
|
58
|
+
extra_rdoc_files:
|
59
|
+
- Manifest.txt
|
53
60
|
executables: []
|
54
61
|
|
55
62
|
extensions: []
|
@@ -91,5 +98,5 @@ dependencies:
|
|
91
98
|
requirements:
|
92
99
|
- - ">="
|
93
100
|
- !ruby/object:Gem::Version
|
94
|
-
version: 1.2.
|
101
|
+
version: 1.2.1
|
95
102
|
version:
|