em-campfire 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -52,7 +52,8 @@ EM.run {
52
52
  :api_key => "jhhekrlfjnksdjnliyherkjb",
53
53
  :verbose => true,
54
54
  :logger => Logger::Syslog.new('process_name', Syslog::LOG_PID | Syslog::LOG_CONS),
55
- :cache => custom_cache_object
55
+ :cache => custom_cache_object,
56
+ :ignore_self => true
56
57
  )
57
58
 
58
59
  # more code
@@ -83,7 +84,6 @@ I've tested it in Ruby >= 1.9.3.
83
84
 
84
85
  ## TODO
85
86
 
86
- * I mock is\_me? in "should be able to ignore itself" in connection_spec.rb for convenience, work out a way to not do that
87
87
  * See if http connection/cacheing/failure handling can be abstracted
88
88
  * Allow user to pass success/error callbacks
89
89
  * Re-try failed HTTP requests
@@ -12,12 +12,12 @@ module EventMachine
12
12
  attr_accessor :on_message_block
13
13
 
14
14
  def process_message(msg)
15
+ return if (msg[:type] == "TimestampMessage" && ignore_timestamps?)
15
16
  logger.debug "Received message #{msg.inspect}"
16
17
  if ignore_self && is_me?(msg[:user_id])
17
18
  logger.debug "Ignoring message with user_id #{msg[:user_id]} as that is me and ignore_self is true"
18
19
  else
19
20
  if on_message_block
20
- logger.debug "on_message callback exists, calling it with #{msg.inspect}"
21
21
  on_message_block.call(msg)
22
22
  else
23
23
  logger.debug "on_message callback does not exist"
@@ -1,5 +1,5 @@
1
1
  module EventMachine
2
2
  class Campfire
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
data/lib/em-campfire.rb CHANGED
@@ -12,7 +12,7 @@ require "em-campfire/cache"
12
12
 
13
13
  module EventMachine
14
14
  class Campfire
15
- attr_accessor :logger, :verbose, :subdomain, :api_key
15
+ attr_accessor :logger, :verbose, :subdomain, :api_key, :ignore_timestamps
16
16
 
17
17
  include Connection
18
18
  include Rooms
@@ -56,5 +56,9 @@ module EventMachine
56
56
  @verbose = is_verbose
57
57
  logger.level = Logger::DEBUG if is_verbose
58
58
  end
59
+
60
+ def ignore_timestamps?
61
+ self.ignore_timestamps || false
62
+ end
59
63
  end # Campfire
60
64
  end # EventMachine
@@ -13,25 +13,25 @@ end
13
13
 
14
14
  describe EventMachine::Campfire::Connection do
15
15
  before :each do
16
- mock_logger(ConnectionTester)
17
16
  @conn = ConnectionTester.new
18
17
  end
19
18
 
20
- it "should receive messages" do
21
- @conn.receive_message "foo"
22
- logger_output.should =~ /DEBUG.*Received message "foo"/
19
+ it "should alert if on_message callback doesn't exist" do
20
+ mock_logger(ConnectionTester)
21
+ @conn.receive_message({:type=>"TextMessage"})
23
22
  logger_output.should =~ /DEBUG.*on_message callback does not exist/
24
23
  end
25
24
 
26
25
  it "should process on_message an block if present" do
26
+ mock_logger(ConnectionTester)
27
27
  ping = mock
28
- ping.expects(:ping).with("foo")
28
+ ping.expects(:ping).with({:type=>"TextMessage"})
29
29
  @conn.on_message {|message| ping.ping(message) }
30
- @conn.receive_message "foo"
31
- logger_output.should =~ /DEBUG.*on_message callback exists, calling it with "foo"/
30
+ @conn.receive_message({:type=>"TextMessage"})
32
31
  end
33
32
 
34
33
  it "should be able to ignore itself" do
34
+ mock_logger(ConnectionTester)
35
35
  @conn.ignore_self = true
36
36
  @conn.cache.stubs(:get).with('user-data-me').returns({'id' => 789})
37
37
 
@@ -39,11 +39,12 @@ describe EventMachine::Campfire::Connection do
39
39
  ping.expects(:ping).never
40
40
 
41
41
  @conn.on_message { ping.ping }
42
- EM.run_block { @conn.receive_message({:user_id => 789}) }
42
+ EM.run_block { @conn.receive_message({:user_id => 789, :type=>"TextMessage"}) }
43
43
  logger_output.should =~ /Ignoring message with user_id 789 as that is me and ignore_self is true/
44
44
  end
45
45
 
46
46
  it "should not ignore non-self messages" do
47
+ mock_logger(ConnectionTester)
47
48
  stub_self_data_request
48
49
  @conn.ignore_self = true
49
50
 
@@ -52,4 +53,12 @@ describe EventMachine::Campfire::Connection do
52
53
  @conn.on_message { ping.ping }
53
54
  EM.run_block { @conn.receive_message({:user_id => 2}) }
54
55
  end
56
+
57
+ it "should be able to ignore timestamps" do
58
+ @conn.expects(:ignore_timestamps?).returns(true)
59
+ ping = mock
60
+ ping.expects(:ping).never
61
+ @conn.on_message {|message| ping.ping }
62
+ @conn.receive_message({:room_id=>410261, :created_at=>"2012/10/03 22:55:00 +0000", :body=>nil, :starred=>false, :id=>688112871, :user_id=>nil, :type=>"TimestampMessage"})
63
+ end
55
64
  end
@@ -3,7 +3,6 @@ require "spec_helper"
3
3
  describe EventMachine::Campfire do
4
4
 
5
5
  before :each do
6
- # stub_room_list_data_request
7
6
  @self_data_request_stub = stub_self_data_request
8
7
  end
9
8
 
@@ -81,7 +80,20 @@ describe EventMachine::Campfire do
81
80
  @adaptor.cache.set("foo", "bar")
82
81
  @adaptor.cache.get("foo").should eql("bar")
83
82
  end
83
+ end
84
+
85
+ describe "#ignore_timestamps" do
86
+ before :each do
87
+ EM.run_block { @adaptor = a EM::Campfire }
88
+ end
84
89
 
90
+ it "should default to false" do
91
+ @adaptor.ignore_timestamps?.should eql(false)
92
+ end
93
+
94
+ it "should be overridable at initialization" do
95
+ EM.run_block { a(EM::Campfire, :ignore_timestamps => true).ignore_timestamps?.should be_true }
96
+ end
85
97
  end
86
98
  end
87
99
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em-campfire
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
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-10-02 00:00:00.000000000 Z
12
+ date: 2012-10-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
@@ -185,7 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
185
185
  version: '0'
186
186
  segments:
187
187
  - 0
188
- hash: 4475605419022692822
188
+ hash: 734765957230943654
189
189
  required_rubygems_version: !ruby/object:Gem::Requirement
190
190
  none: false
191
191
  requirements:
@@ -194,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  version: '0'
195
195
  segments:
196
196
  - 0
197
- hash: 4475605419022692822
197
+ hash: 734765957230943654
198
198
  requirements: []
199
199
  rubyforge_project:
200
200
  rubygems_version: 1.8.24