camper_van 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- camper_van (0.0.3)
4
+ camper_van (0.0.5)
5
5
  eventmachine (~> 0.12.10)
6
6
  firering (~> 1.2.0)
7
7
  logging (~> 1.5.1)
@@ -86,6 +86,7 @@ module CamperVan
86
86
  # connections: allowing them to time out rather than leaving explicitly.
87
87
  def part
88
88
  client.user_reply :part, channel
89
+ # FIXME this doesn't work. Not even on next_tick. EM/em-http-request bug?
89
90
  stream.close_connection if stream
90
91
  # room.leave # let the timeout do it rather than being explicit!
91
92
  end
@@ -242,8 +243,10 @@ module CamperVan
242
243
 
243
244
  # Stream messages from campfire and map them to IRC commands for the
244
245
  # connected client.
246
+ #
247
+ # Only starts the stream once.
245
248
  def stream_campfire_to_channel
246
- @stream = room.stream do |message|
249
+ @stream ||= room.stream do |message|
247
250
  map_message_to_irc message
248
251
  end
249
252
  end
@@ -309,11 +312,11 @@ module CamperVan
309
312
  lines = message.body.split("\n")
310
313
 
311
314
  lines[0..2].each do |line|
312
- client.campfire_reply :privmsg, name, channel, "> " + line
315
+ client.campfire_reply :privmsg, name, channel, ":> " + line
313
316
  end
314
317
 
315
318
  if lines.size > 3
316
- client.campfire_reply :privmsg, name, channel, "> more: " +
319
+ client.campfire_reply :privmsg, name, channel, ":> more: " +
317
320
  "https://#{client.subdomain}.campfirenow.com/room/#{room.id}/paste/#{message.id}"
318
321
  end
319
322
 
@@ -349,7 +352,7 @@ module CamperVan
349
352
  else
350
353
  body = message.body
351
354
  end
352
- client.campfire_reply :privmsg, name, channel, body
355
+ client.campfire_reply :privmsg, name, channel, ":" + body
353
356
  end
354
357
 
355
358
  when "TopicChange"
@@ -187,6 +187,11 @@ module CamperVan
187
187
 
188
188
  handle :part do |args|
189
189
  name = args.first
190
+ # FIXME parting a channel should remove the channel from channels, except
191
+ # that there's a bug with EM that won't disconnect the streaming request.
192
+ # Because of that, leave the channel in the list, and assume the irc
193
+ # client attached to this IRCD will ignore messages from channels it's not
194
+ # currently in.
190
195
  if channel = channels[name]
191
196
  channel.part
192
197
  else
@@ -326,7 +331,7 @@ module CamperVan
326
331
  def join_channel(name)
327
332
  campfire.rooms do |rooms|
328
333
  if room = rooms.detect { |r| "#" + irc_name(r.name) == name }
329
- channel = Channel.new(name, self, room)
334
+ channel = channels[name] || Channel.new(name, self, room)
330
335
  if channel.join
331
336
  channels[name] = channel
332
337
  end
@@ -1,3 +1,3 @@
1
1
  module CamperVan
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -21,6 +21,7 @@ describe CamperVan::Channel do
21
21
  class TestRoom
22
22
  attr_reader :locked, :full, :topic, :membership_limit
23
23
  attr_reader :sent
24
+ attr_reader :stream_count
24
25
 
25
26
  attr_writer :users, :topic, :locked, :full, :open_to_guests
26
27
  attr_writer :stream
@@ -29,6 +30,7 @@ describe CamperVan::Channel do
29
30
  @users = []
30
31
  @sent = []
31
32
  @membership_limit = 12
33
+ @stream_count = 0
32
34
  end
33
35
 
34
36
  def id
@@ -62,10 +64,11 @@ describe CamperVan::Channel do
62
64
  end
63
65
 
64
66
  def stream
67
+ @stream_count += 1
65
68
  if @messages
66
69
  @messages.each { |m| yield m }
67
70
  end
68
- return @stream
71
+ @stream ||= "message stream" # must be truthy
69
72
  end
70
73
  end
71
74
 
@@ -106,6 +109,12 @@ describe CamperVan::Channel do
106
109
  @channel.join
107
110
  @client.sent[2].must_equal ":camper_van 353 nathan = #test :nathan bob joe"
108
111
  end
112
+
113
+ it "does not stream messages from the room on a second join" do
114
+ @channel.join
115
+ @channel.join
116
+ @room.stream_count.must_equal 1
117
+ end
109
118
  end
110
119
 
111
120
  describe "#part" do
@@ -311,8 +320,8 @@ describe CamperVan::Channel do
311
320
  end
312
321
 
313
322
  it "sends a privmsg with the message when a user says something" do
314
- @channel.map_message_to_irc msg("Text", :body => "hello")
315
- @client.sent.last.must_match ":joe!joe@campfire PRIVMSG #test hello"
323
+ @channel.map_message_to_irc msg("Text", :body => "hello there")
324
+ @client.sent.last.must_match ":joe!joe@campfire PRIVMSG #test :hello there"
316
325
  end
317
326
 
318
327
  it "sends a privmsg with the pasted url and the first line when a user pastes something" do
@@ -346,7 +355,7 @@ describe CamperVan::Channel do
346
355
  ]
347
356
  @channel.list_users
348
357
  @channel.map_message_to_irc msg("Text", :body => "Bob Fred")
349
- @client.sent.last.must_match %r(PRIVMSG #test bob_fred)
358
+ @client.sent.last.must_match %r(PRIVMSG #test :bob_fred)
350
359
  end
351
360
 
352
361
  it "converts leading names plus punctuation to nicks" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camper_van
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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: 2012-06-13 00:00:00.000000000 Z
12
+ date: 2012-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
@@ -148,6 +148,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  - - ! '>='
149
149
  - !ruby/object:Gem::Version
150
150
  version: '0'
151
+ segments:
152
+ - 0
153
+ hash: 4196066118135228285
151
154
  requirements: []
152
155
  rubyforge_project: camper_van
153
156
  rubygems_version: 1.8.24