lita-campfire 0.1.4 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 711b381aa5f58bc007ea46b6e7dca13f856fe4ad
4
- data.tar.gz: 503b935c87bc152db95400c2c52aa2629d640334
3
+ metadata.gz: ab077da2c08ee6eb9ad0870696b8d6d4fecb1f28
4
+ data.tar.gz: 8ce64c6fab1e4cd8cab38668c40bf77de15b1700
5
5
  SHA512:
6
- metadata.gz: a9c7cf1f3614b76e0487aeded9bfc31a5d89d624d28b2e8b5da90074a519e637d2c4886c933432b1edbb648a9f1246f43c55767030c10c3c4b6e7a7f6782d53b
7
- data.tar.gz: 89750d635765c465bb5d871c27951e40e16852d629a3d325d4b6d343798fd66af5a2c1937fcbaa7e61635e04e46d8dece6b4f782da4b9e8c9b095977132fd7c1
6
+ metadata.gz: 746b4e1ec9e377b979a2c034cb1f1edf3756aa2b9da6e90aa294d333a76c180307bf623ccdef58ba4d22b576a86f2b20f364fb52840a7f8aa8003fa0afa2bcce
7
+ data.tar.gz: ced59da8e225161853bbdb6ca6fadc04947b84db00a27440c92bcd8aa9216d5b7fa1410116e1a74c2abc2f80d0bff70748e3a39150b779655ee5584ce99fc365
@@ -1,6 +1,9 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
+ - 2.1.0
4
5
  script: bundle exec rspec
6
+ services:
7
+ - redis-server
5
8
  before_install:
6
- - gem update --system
9
+ - gem update --system
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lita-campfire (0.1.4)
5
- lita (~> 2.7.0)
6
- tinder (~> 1.9.0)
4
+ lita-campfire (0.2.0)
5
+ lita (>= 2.7.0, < 4.0.0)
6
+ tinder (~> 1.9.4)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -14,74 +14,81 @@ GEM
14
14
  simplecov (>= 0.7)
15
15
  term-ansicolor
16
16
  thor
17
- daemons (1.1.9)
18
17
  diff-lcs (1.2.5)
19
- docile (1.1.1)
18
+ docile (1.1.3)
20
19
  eventmachine (1.0.3)
21
- faraday (0.8.8)
20
+ faraday (0.8.9)
22
21
  multipart-post (~> 1.2.0)
23
22
  faraday_middleware (0.9.0)
24
23
  faraday (>= 0.7.4, < 0.9)
25
24
  hashie (2.0.5)
26
25
  http_parser.rb (0.5.3)
26
+ http_router (0.11.1)
27
+ rack (>= 1.0.0)
28
+ url_mount (~> 0.2.1)
29
+ i18n (0.6.9)
30
+ ice_nine (0.11.0)
27
31
  json (1.8.1)
28
- lita (2.7.1)
32
+ lita (3.0.3)
29
33
  bundler (>= 1.3)
30
34
  faraday (>= 0.8.7)
35
+ http_router (>= 0.11.1)
36
+ i18n (>= 0.6.9)
37
+ ice_nine (>= 0.11.0)
31
38
  multi_json (>= 1.7.7)
39
+ puma (>= 2.7.1)
32
40
  rack (>= 1.5.2)
33
41
  redis-namespace (>= 1.3.0)
34
- thin (>= 1.5.1)
35
42
  thor (>= 0.18.1)
36
43
  mime-types (1.25.1)
37
- multi_json (1.8.2)
44
+ multi_json (1.8.4)
38
45
  multipart-post (1.2.0)
46
+ puma (2.8.0)
47
+ rack (>= 1.1, < 2.0)
39
48
  rack (1.5.2)
40
49
  rake (10.1.1)
41
- redis (3.0.6)
50
+ redis (3.0.7)
42
51
  redis-namespace (1.4.1)
43
52
  redis (~> 3.0.4)
44
53
  rest-client (1.6.7)
45
54
  mime-types (>= 1.16)
46
- rspec (3.0.0.beta1)
47
- rspec-core (= 3.0.0.beta1)
48
- rspec-expectations (= 3.0.0.beta1)
49
- rspec-mocks (= 3.0.0.beta1)
50
- rspec-core (3.0.0.beta1)
51
- rspec-support (= 3.0.0.beta1)
52
- rspec-expectations (3.0.0.beta1)
53
- diff-lcs (>= 1.1.3, < 2.0)
54
- rspec-support (= 3.0.0.beta1)
55
- rspec-mocks (3.0.0.beta1)
56
- rspec-support (= 3.0.0.beta1)
57
- rspec-support (3.0.0.beta1)
55
+ rspec (3.0.0.beta2)
56
+ rspec-core (= 3.0.0.beta2)
57
+ rspec-expectations (= 3.0.0.beta2)
58
+ rspec-mocks (= 3.0.0.beta2)
59
+ rspec-core (3.0.0.beta2)
60
+ rspec-support (= 3.0.0.beta2)
61
+ rspec-expectations (3.0.0.beta2)
62
+ diff-lcs (>= 1.2.0, < 2.0)
63
+ rspec-support (= 3.0.0.beta2)
64
+ rspec-mocks (3.0.0.beta2)
65
+ rspec-support (= 3.0.0.beta2)
66
+ rspec-support (3.0.0.beta2)
58
67
  simple_oauth (0.1.9)
59
68
  simplecov (0.8.2)
60
69
  docile (~> 1.1.0)
61
70
  multi_json
62
71
  simplecov-html (~> 0.8.0)
63
72
  simplecov-html (0.8.0)
64
- term-ansicolor (1.2.2)
65
- tins (~> 0.8)
66
- thin (1.6.1)
67
- daemons (>= 1.0.9)
68
- eventmachine (>= 1.0.0)
69
- rack (>= 1.0.0)
73
+ term-ansicolor (1.3.0)
74
+ tins (~> 1.0)
70
75
  thor (0.18.1)
71
- tinder (1.9.3)
76
+ tinder (1.9.4)
72
77
  eventmachine (~> 1.0)
73
- faraday (~> 0.8)
78
+ faraday (~> 0.8.9)
74
79
  faraday_middleware (~> 0.9)
75
80
  hashie (>= 1.0, < 3)
76
81
  json (~> 1.8.0)
77
82
  mime-types (~> 1.19)
78
83
  multi_json (~> 1.7)
79
84
  twitter-stream (~> 0.1)
80
- tins (0.13.1)
85
+ tins (1.0.0)
81
86
  twitter-stream (0.1.16)
82
87
  eventmachine (>= 0.12.8)
83
88
  http_parser.rb (~> 0.5.1)
84
89
  simple_oauth (~> 0.1.4)
90
+ url_mount (0.2.1)
91
+ rack
85
92
 
86
93
  PLATFORMS
87
94
  ruby
@@ -91,5 +98,5 @@ DEPENDENCIES
91
98
  coveralls
92
99
  lita-campfire!
93
100
  rake
94
- rspec (~> 3.0.0.beta1)
101
+ rspec (~> 3.0.0.beta2)
95
102
  simplecov
@@ -3,11 +3,12 @@ module Lita
3
3
  class Campfire < Adapter
4
4
  class Callback
5
5
 
6
- attr_reader :robot, :room
6
+ attr_reader :robot, :room, :robot_id
7
7
 
8
- def initialize(robot, room)
9
- @robot = robot
10
- @room = room
8
+ def initialize(options)
9
+ @robot = options.fetch(:robot)
10
+ @room = options.fetch(:room)
11
+ @robot_id = options.fetch(:robot_id)
11
12
 
12
13
  @receivers = [MessageReceiver, EnterReceiver].map do |receiver_type|
13
14
  receiver_type.new(self)
@@ -15,8 +16,10 @@ module Lita
15
16
  end
16
17
 
17
18
  def listen(options={})
18
- @room.listen(options) do |event|
19
- receive event
19
+ Thread.new do
20
+ @room.listen(options) do |event|
21
+ receive event
22
+ end
20
23
  end
21
24
  end
22
25
 
@@ -54,6 +57,7 @@ module Lita
54
57
  @callback = callback
55
58
  @robot = callback.robot
56
59
  @room = callback.room
60
+ @robot_id = callback.robot_id
57
61
  end
58
62
 
59
63
  def receive(event)
@@ -62,8 +66,14 @@ module Lita
62
66
 
63
67
  private
64
68
 
69
+ attr_reader :robot_id
70
+
65
71
  def receives?(event)
66
- self.class.message_types.include?(event.type)
72
+ self.class.message_types.include?(event.type) && !robot?(event.user)
73
+ end
74
+
75
+ def robot?(user)
76
+ robot_id == user.id
67
77
  end
68
78
  end
69
79
 
@@ -90,7 +100,6 @@ module Lita
90
100
  end
91
101
 
92
102
  end
93
-
94
103
  end
95
104
  end
96
105
  end
@@ -12,7 +12,7 @@ module Lita
12
12
  end
13
13
 
14
14
  def connect
15
- @campfire = Tinder::Campfire.new(@subdomain, token: @apikey)
15
+ @campfire = Tinder::Campfire.new(subdomain, token: apikey)
16
16
  end
17
17
 
18
18
  def disconnect
@@ -27,9 +27,9 @@ module Lita
27
27
  rooms.each do |room_id|
28
28
  room = fetch_room(room_id)
29
29
  room.join
30
- callback = Callback.new(@robot, room)
30
+ callback = Callback.new(robot: robot, room: room, robot_id: robot_id)
31
31
  callback.register_users
32
- callback.listen(@tinder_options)
32
+ callback.listen(tinder_options)
33
33
  end
34
34
  end
35
35
 
@@ -51,16 +51,21 @@ module Lita
51
51
 
52
52
  private
53
53
 
54
- attr_reader :rooms
54
+ attr_reader :rooms, :subdomain, :apikey, :tinder_options, :robot
55
+ attr_accessor :campfire
55
56
 
56
57
  def fetch_room(room_id)
57
- @campfire.find_room_by_id(room_id).tap do |room|
58
+ campfire.find_room_by_id(room_id).tap do |room|
58
59
  if room.nil?
59
60
  raise RoomNotAvailable,
60
61
  "Make sure you have access to room #{ room_id.inspect }"
61
62
  end
62
63
  end
63
64
  end
65
+
66
+ def robot_id
67
+ campfire.me.id
68
+ end
64
69
  end
65
70
  end
66
71
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "lita-campfire"
3
- spec.version = "0.1.4"
3
+ spec.version = "0.2.0"
4
4
  spec.authors = ["Jose Luis Salas", "Zac Stewart"]
5
5
  spec.email = ["josacar@gmail.com", "zgstewart@gmail.com"]
6
6
  spec.description = %q{A Campfire adapter for Lita.}
@@ -14,12 +14,12 @@ Gem::Specification.new do |spec|
14
14
  spec.require_paths = ["lib"]
15
15
  spec.metadata = { "lita_plugin_type" => "adapter" }
16
16
 
17
- spec.add_runtime_dependency "lita", "~> 2.7.0"
18
- spec.add_runtime_dependency "tinder", "~> 1.9.0"
17
+ spec.add_runtime_dependency "lita", ">= 2.7.0", '< 4.0.0'
18
+ spec.add_runtime_dependency "tinder", "~> 1.9.4"
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.5"
21
21
  spec.add_development_dependency "rake"
22
- spec.add_development_dependency "rspec", "~> 3.0.0.beta1"
22
+ spec.add_development_dependency "rspec", "~> 3.0.0.beta2"
23
23
  spec.add_development_dependency "simplecov"
24
24
  spec.add_development_dependency "coveralls"
25
25
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'hashie'
2
3
 
3
4
  describe Campfire::Callback do
4
5
 
@@ -9,7 +10,9 @@ describe Campfire::Callback do
9
10
  end
10
11
 
11
12
  let(:event) { instance_double('Event') }
12
- let(:campfire_user) { { id: 1, name: 'Bender Bending Rodriguez' } }
13
+ let(:campfire_user) { Hashie::Mash.new({ id: 1, name: 'Bender Bending Rodriguez' }) }
14
+ let(:robot_id) { 2 }
15
+ let(:robot_user) { Hashie::Mash.new({ id: robot_id, name: 'Hubot bot' }) }
13
16
  let(:message) { instance_double(Lita::Message) }
14
17
  let(:robot) { instance_double(Lita::Robot, mention_name: 'Robot') }
15
18
  let(:room) { DummyRoom.new(1, event, users) }
@@ -18,7 +21,7 @@ describe Campfire::Callback do
18
21
  let(:user) { instance_double(Lita::User) }
19
22
  let(:users) { [ {id: 2, name: 'Bender'}, {id: 3, name: 'Washbucket'} ] }
20
23
 
21
- subject { described_class.new(robot, room) }
24
+ subject { described_class.new(robot: robot, room: room, robot_id: robot_id) }
22
25
 
23
26
  describe '#listen' do
24
27
  before do
@@ -26,20 +29,37 @@ describe Campfire::Callback do
26
29
  end
27
30
  %w( TextMessage PasteMessage ).each do |message_type|
28
31
  describe "with a #{message_type}" do
29
- let(:event) do
30
- instance_double('Event',
31
- type: message_type,
32
- body: text,
33
- user: campfire_user,
34
- room_id: 1)
32
+ context 'when message from user' do
33
+ let(:event) do
34
+ instance_double('Event',
35
+ type: message_type,
36
+ body: text,
37
+ user: campfire_user,
38
+ room_id: 1)
39
+ end
40
+
41
+ it 'passes the message to Robot#receive' do
42
+ expect(Lita::User).to receive(:create).with(1, name: 'Bender Bending Rodriguez').and_return(user)
43
+ expect(Lita::Source).to receive(:new).with(user: user, room: '1').and_return(source)
44
+ expect(Lita::Message).to receive(:new).with(robot, text, source).and_return(message)
45
+ expect(robot).to receive(:receive).with(message)
46
+ subject.listen
47
+ end
35
48
  end
36
49
 
37
- it 'passes the message to Robot#receive' do
38
- expect(Lita::User).to receive(:create).with(1, name: 'Bender Bending Rodriguez').and_return(user)
39
- expect(Lita::Source).to receive(:new).with(user: user, room: '1').and_return(source)
40
- expect(Lita::Message).to receive(:new).with(robot, text, source).and_return(message)
41
- expect(robot).to receive(:receive).with(message)
42
- subject.listen
50
+ context 'when message from robot' do
51
+ let(:event) do
52
+ instance_double('Event',
53
+ type: message_type,
54
+ body: text,
55
+ user: robot_user,
56
+ room_id: 1)
57
+ end
58
+
59
+ it 'does not pass the message to Robot#receive' do
60
+ expect(robot).not_to receive(:receive).with(message)
61
+ subject.listen
62
+ end
43
63
  end
44
64
  end
45
65
  end
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Campfire::Connector do
3
+ describe Campfire::Connector, lita: true do
4
4
  let(:robot) { instance_double(Lita::Robot) }
5
+ let(:robot_id) { 2 }
5
6
  let(:subdomain) { 'mycampfire' }
6
7
  let(:apikey) { '2e9f45bb934c0fa13e9f19ee0901c316fda9fc1' }
7
8
  let(:rooms) { %w( 12345 ) }
@@ -13,7 +14,6 @@ describe Campfire::Connector do
13
14
 
14
15
  before do
15
16
  allow(Tinder::Campfire).to receive(:new).and_return(campfire)
16
- allow(campfire).to receive(:find_room_by_id).and_return(room)
17
17
  end
18
18
 
19
19
  describe '#connect' do
@@ -25,12 +25,12 @@ describe Campfire::Connector do
25
25
 
26
26
  context 'when connected to campfire' do
27
27
  before do
28
+ allow(campfire).to receive(:find_room_by_id).and_return(room)
28
29
  subject.connect
29
30
  end
30
31
  let(:callback) { instance_double(Campfire::Callback) }
31
32
 
32
33
  describe '#disconnect' do
33
-
34
34
  it "leaves joined rooms" do
35
35
  expect(room).to receive(:leave)
36
36
  subject.disconnect
@@ -51,6 +51,7 @@ describe Campfire::Connector do
51
51
  it 'passes options to underlying tinder lib' do
52
52
  allow(campfire).to receive(:find_room_by_id).and_return(room)
53
53
  subject.connect
54
+ allow(campfire).to receive_message_chain(:me,:id).and_return(robot_id)
54
55
  allow(Campfire::Callback).to receive(:new).and_return(callback)
55
56
 
56
57
  allow(room).to receive(:join)
@@ -63,8 +64,9 @@ describe Campfire::Connector do
63
64
  describe '#join_rooms' do
64
65
  describe 'when I have access to the room' do
65
66
  it 'joins each room, registers the users and listens for messages' do
67
+ allow(campfire).to receive_message_chain(:me,:id).and_return(robot_id)
66
68
  expect(Campfire::Callback).to receive(:new).
67
- with(robot, room).
69
+ with(robot: robot, room: room, robot_id: robot_id).
68
70
  and_return(callback)
69
71
 
70
72
  expect(room).to receive(:join)
@@ -107,11 +109,6 @@ describe Campfire::Connector do
107
109
  end
108
110
 
109
111
  describe '#set_topic' do
110
- before do
111
- allow(Lita.logger).to receive(:info)
112
- allow(campfire).to receive(:find_room_by_id).and_return(room)
113
- subject.connect
114
- end
115
112
  let(:topic) { 'Let it be wadus' }
116
113
 
117
114
  it 'sets toom topic' do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Lita::Adapters::Campfire do
3
+ describe Lita::Adapters::Campfire, lita: true do
4
4
  before do
5
5
  Lita.configure do |config|
6
6
  config.adapter.subdomain = 'foodomain'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-campfire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Luis Salas
@@ -9,36 +9,42 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-12 00:00:00.000000000 Z
12
+ date: 2014-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: lita
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: 2.7.0
21
+ - - <
22
+ - !ruby/object:Gem::Version
23
+ version: 4.0.0
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - ~>
28
+ - - '>='
26
29
  - !ruby/object:Gem::Version
27
30
  version: 2.7.0
31
+ - - <
32
+ - !ruby/object:Gem::Version
33
+ version: 4.0.0
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: tinder
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
38
  - - ~>
33
39
  - !ruby/object:Gem::Version
34
- version: 1.9.0
40
+ version: 1.9.4
35
41
  type: :runtime
36
42
  prerelease: false
37
43
  version_requirements: !ruby/object:Gem::Requirement
38
44
  requirements:
39
45
  - - ~>
40
46
  - !ruby/object:Gem::Version
41
- version: 1.9.0
47
+ version: 1.9.4
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: bundler
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +79,14 @@ dependencies:
73
79
  requirements:
74
80
  - - ~>
75
81
  - !ruby/object:Gem::Version
76
- version: 3.0.0.beta1
82
+ version: 3.0.0.beta2
77
83
  type: :development
78
84
  prerelease: false
79
85
  version_requirements: !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - ~>
82
88
  - !ruby/object:Gem::Version
83
- version: 3.0.0.beta1
89
+ version: 3.0.0.beta2
84
90
  - !ruby/object:Gem::Dependency
85
91
  name: simplecov
86
92
  requirement: !ruby/object:Gem::Requirement
@@ -163,3 +169,4 @@ test_files:
163
169
  - spec/lita/adapters/campfire/connector_spec.rb
164
170
  - spec/lita/adapters/campfire_spec.rb
165
171
  - spec/spec_helper.rb
172
+ has_rdoc: