firetower 0.0.1 → 0.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/.gitignore +1 -0
- data/bin/firetower +2 -2
- data/lib/firetower/account.rb +23 -0
- data/{images → lib/firetower/plugins/core}/campfire-logo-for-fluid.png +0 -0
- data/lib/firetower/plugins/core/notify_plugin.rb +8 -4
- data/lib/firetower/server.rb +8 -3
- data/lib/firetower/session.rb +6 -4
- metadata +6 -4
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg
|
data/bin/firetower
CHANGED
@@ -213,16 +213,16 @@ Main do
|
|
213
213
|
def run
|
214
214
|
if detach
|
215
215
|
firetower_daemon.startup
|
216
|
+
puts "Firetower is vigilantly scanning the treetops"
|
216
217
|
else
|
217
218
|
logger ::Logger.new($stdout)
|
218
219
|
start_server(:logger => logger)
|
219
220
|
end
|
220
|
-
puts "Firetower is vigilantly scanning the treetops"
|
221
221
|
end
|
222
222
|
end
|
223
223
|
|
224
224
|
mode :stop do
|
225
|
-
description "
|
225
|
+
description "Stop the listener daemon"
|
226
226
|
|
227
227
|
def run
|
228
228
|
firetower_daemon.shutdown
|
data/lib/firetower/account.rb
CHANGED
@@ -11,6 +11,7 @@ module Firetower
|
|
11
11
|
data = session.get(subdomain, "/users/#{user_id}.json")
|
12
12
|
cache[user_id] = data['user']
|
13
13
|
end
|
14
|
+
@joined_rooms = []
|
14
15
|
end
|
15
16
|
|
16
17
|
def rooms
|
@@ -45,6 +46,28 @@ module Firetower
|
|
45
46
|
})
|
46
47
|
end
|
47
48
|
|
49
|
+
def join!(room_name)
|
50
|
+
room = rooms[room_name]
|
51
|
+
session.post(subdomain, "/room/#{room.id}/join.json")
|
52
|
+
@joined_rooms << room
|
53
|
+
session.logger.info "Joined room #{subdomain}/#{room_name}"
|
54
|
+
session.execute_hook(:join, session, room)
|
55
|
+
end
|
56
|
+
|
57
|
+
def leave!(room_name)
|
58
|
+
room = rooms[room_name]
|
59
|
+
session.post(subdomain, "/room/#{room.id}/leave.json")
|
60
|
+
@joined_rooms.delete(room)
|
61
|
+
session.logger.info "Left room #{subdomain}/#{room_name}"
|
62
|
+
session.execute_hook(:leave, session, room)
|
63
|
+
end
|
64
|
+
|
65
|
+
def close!
|
66
|
+
@joined_rooms.each do |room|
|
67
|
+
leave!(room.name)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
48
71
|
def ssl?
|
49
72
|
@ssl
|
50
73
|
end
|
File without changes
|
@@ -4,7 +4,7 @@ module Firetower
|
|
4
4
|
|
5
5
|
def startup(session)
|
6
6
|
if session.kind == :server
|
7
|
-
notify("Firetower", "Firetower is
|
7
|
+
notify("Firetower", "Firetower is vigilantly scanning the treetops")
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -12,6 +12,10 @@ module Firetower
|
|
12
12
|
notify("Firetower", "Joined room \"#{room.name}\"")
|
13
13
|
end
|
14
14
|
|
15
|
+
def leave(session, room)
|
16
|
+
notify("Firetower", "Left room \"#{room.name}\"")
|
17
|
+
end
|
18
|
+
|
15
19
|
def receive(session, event)
|
16
20
|
case event['type']
|
17
21
|
when "TextMessage"
|
@@ -22,8 +26,8 @@ module Firetower
|
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
25
|
-
def error(session,
|
26
|
-
notify("Campfire Error",
|
29
|
+
def error(session, error)
|
30
|
+
notify("Campfire Error", error.message)
|
27
31
|
end
|
28
32
|
|
29
33
|
private
|
@@ -31,7 +35,7 @@ module Firetower
|
|
31
35
|
def notify(*args)
|
32
36
|
system('notify-send', '--icon',
|
33
37
|
File.expand_path(
|
34
|
-
'
|
38
|
+
'campfire-logo-for-fluid.png',
|
35
39
|
File.dirname(__FILE__)),
|
36
40
|
'-c', 'Firetower',
|
37
41
|
*args) or raise "Desktop notification failed"
|
data/lib/firetower/server.rb
CHANGED
@@ -26,11 +26,16 @@ module Firetower
|
|
26
26
|
subscribe_to_room(room)
|
27
27
|
end
|
28
28
|
end
|
29
|
+
@logger.info "Finished processing events; closing session"
|
29
30
|
session.close!
|
31
|
+
@logger.info "Session closed"
|
30
32
|
end
|
31
33
|
|
32
34
|
def subscribe_to_room(room)
|
33
35
|
@logger.info "Subscribing to #{room}"
|
36
|
+
|
37
|
+
room.account.join!(room.name)
|
38
|
+
|
34
39
|
stream = Twitter::JSONStream.connect(
|
35
40
|
:path => "/room/#{room.id}/live.json",
|
36
41
|
:host => 'streaming.campfirenow.com',
|
@@ -45,8 +50,9 @@ module Firetower
|
|
45
50
|
end
|
46
51
|
|
47
52
|
stream.on_error do |message|
|
48
|
-
|
49
|
-
|
53
|
+
error = RuntimeError.new(message)
|
54
|
+
@logger.error error.message
|
55
|
+
session.execute_hook(:error, error)
|
50
56
|
end
|
51
57
|
|
52
58
|
stream.on_max_reconnects do |timeout, retries|
|
@@ -55,7 +61,6 @@ module Firetower
|
|
55
61
|
"Unable to connect after #{retries} attempts")
|
56
62
|
stop_event_loop
|
57
63
|
end
|
58
|
-
session.execute_hook(:join, session, room)
|
59
64
|
end
|
60
65
|
|
61
66
|
end
|
data/lib/firetower/session.rb
CHANGED
@@ -19,7 +19,7 @@ module Firetower
|
|
19
19
|
define_hook :connect, :session, :account
|
20
20
|
define_hook :join, :session, :room
|
21
21
|
define_hook :receive, :session, :event
|
22
|
-
define_hook :error, :session, :
|
22
|
+
define_hook :error, :session, :error
|
23
23
|
define_hook :leave, :session, :room
|
24
24
|
define_hook :disconnect, :session, :account
|
25
25
|
define_hook :shutdown, :session
|
@@ -71,9 +71,9 @@ module Firetower
|
|
71
71
|
@default_room ||= @subscribed_rooms.first
|
72
72
|
end
|
73
73
|
|
74
|
-
def post(subdomain, path, data)
|
74
|
+
def post(subdomain, path, data=nil)
|
75
75
|
request = Net::HTTP::Post.new(path)
|
76
|
-
request.body = data.to_json
|
76
|
+
request.body = data.to_json if data
|
77
77
|
request['Content-Type'] = 'application/json'
|
78
78
|
perform_request(subdomain, request)
|
79
79
|
end
|
@@ -98,7 +98,9 @@ module Firetower
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def close!
|
101
|
-
|
101
|
+
accounts.values.each do |account|
|
102
|
+
account.close!
|
103
|
+
end
|
102
104
|
end
|
103
105
|
end
|
104
106
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Avdi Grimm
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-07-
|
17
|
+
date: 2010-07-13 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -148,9 +148,11 @@ extra_rdoc_files:
|
|
148
148
|
- History.txt
|
149
149
|
- bin/firetower
|
150
150
|
- lib/firetower/firetower.conf.erb
|
151
|
+
- lib/firetower/plugins/core/campfire-logo-for-fluid.png
|
151
152
|
- version.txt
|
152
153
|
files:
|
153
154
|
- .bnsignore
|
155
|
+
- .gitignore
|
154
156
|
- History.txt
|
155
157
|
- README.html
|
156
158
|
- README.org
|
@@ -158,10 +160,10 @@ files:
|
|
158
160
|
- bin/firetower
|
159
161
|
- example/bot.rb
|
160
162
|
- images/BaldMountainLookout.jpg
|
161
|
-
- images/campfire-logo-for-fluid.png
|
162
163
|
- lib/firetower.rb
|
163
164
|
- lib/firetower/account.rb
|
164
165
|
- lib/firetower/firetower.conf.erb
|
166
|
+
- lib/firetower/plugins/core/campfire-logo-for-fluid.png
|
165
167
|
- lib/firetower/plugins/core/init_v1.rb
|
166
168
|
- lib/firetower/plugins/core/notify_plugin.rb
|
167
169
|
- lib/firetower/room.rb
|