blather 0.5.8 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/blather.gemspec +2 -2
- data/lib/blather/stream.rb +5 -2
- data/lib/blather/version.rb +1 -1
- data/spec/blather/stream/client_spec.rb +14 -2
- data/spec/blather/stream/component_spec.rb +15 -2
- metadata +34 -35
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
v0.5.9
|
2
|
+
Bugfix(benlangfeld): Failed connections now raise a Blather::Stream::ConnectionFailed exception
|
3
|
+
Bugfix(crohr): Blather now supports EventMachine 1.0
|
4
|
+
|
1
5
|
v0.5.8
|
2
6
|
Bugfix(benlangfeld): JIDs now maintain case, but still compare case insensitively
|
3
7
|
Bugfix(jmazzi): Development dependencies now resolve correctly on JRuby and Rubinius
|
data/blather.gemspec
CHANGED
@@ -33,9 +33,9 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.rdoc_options = %w{--charset=UTF-8}
|
34
34
|
s.extra_rdoc_files = %w{LICENSE README.md}
|
35
35
|
|
36
|
-
s.add_dependency "eventmachine", ["
|
36
|
+
s.add_dependency "eventmachine", [">= 0.12.6"]
|
37
37
|
s.add_dependency "nokogiri", ["~> 1.4.0"]
|
38
|
-
s.add_dependency "niceogiri", [">= 0.0
|
38
|
+
s.add_dependency "niceogiri", [">= 0.1.0"]
|
39
39
|
s.add_dependency "activesupport", [">= 3.0.7"]
|
40
40
|
|
41
41
|
s.add_development_dependency "minitest", ["~> 1.7.1"]
|
data/lib/blather/stream.rb
CHANGED
@@ -50,6 +50,7 @@ module Blather
|
|
50
50
|
class Stream < EventMachine::Connection
|
51
51
|
# Connection not found
|
52
52
|
class NoConnection < RuntimeError; end
|
53
|
+
class ConnectionFailed < RuntimeError; end
|
53
54
|
|
54
55
|
# @private
|
55
56
|
STREAM_NS = 'http://etherx.jabber.org/streams'
|
@@ -143,6 +144,7 @@ module Blather
|
|
143
144
|
# this kicks off the starttls/authorize/bind process
|
144
145
|
# @private
|
145
146
|
def connection_completed
|
147
|
+
@connected = true
|
146
148
|
# @keepalive = EM::PeriodicTimer.new(60) { send_data ' ' }
|
147
149
|
start
|
148
150
|
end
|
@@ -178,13 +180,14 @@ module Blather
|
|
178
180
|
# Called by EM after the connection has started
|
179
181
|
# @private
|
180
182
|
def post_init
|
181
|
-
@
|
183
|
+
@inited = true
|
182
184
|
end
|
183
185
|
|
184
186
|
# Called by EM when the connection is closed
|
185
187
|
# @private
|
186
188
|
def unbind
|
187
|
-
raise NoConnection unless @
|
189
|
+
raise NoConnection unless @inited
|
190
|
+
raise ConnectionFailed unless @connected
|
188
191
|
|
189
192
|
# @keepalive.cancel
|
190
193
|
@state = :stopped
|
data/lib/blather/version.rb
CHANGED
@@ -16,15 +16,17 @@ describe Blather::Stream::Client do
|
|
16
16
|
@client.stubs(:post_init) unless @client.respond_to?(:post_init)
|
17
17
|
@client.stubs(:jid=) unless @client.respond_to?(:jid=)
|
18
18
|
|
19
|
+
port = 50000 - rand(1000)
|
20
|
+
|
19
21
|
MockServer.any_instance.expects(:receive_data).send(*(times ? [:times, times] : [:at_least, 1])).with &block
|
20
22
|
EventMachine::run {
|
21
23
|
EM.add_timer(0.5) { EM.stop if EM.reactor_running? }
|
22
24
|
|
23
25
|
# Mocked server
|
24
|
-
EventMachine::start_server '127.0.0.1',
|
26
|
+
EventMachine::start_server '127.0.0.1', port, ServerMock
|
25
27
|
|
26
28
|
# Blather::Stream connection
|
27
|
-
EM.connect('127.0.0.1',
|
29
|
+
EM.connect('127.0.0.1', port, Blather::Stream::Client, @client, @jid || Blather::JID.new('n@d/r'), 'pass') { |c| @stream = c }
|
28
30
|
}
|
29
31
|
end
|
30
32
|
|
@@ -111,6 +113,16 @@ describe Blather::Stream::Client do
|
|
111
113
|
Blather::Stream::Client.start client, 'n@d/r', 'pass'
|
112
114
|
end
|
113
115
|
|
116
|
+
it 'raises a NoConnection exception if the connection is unbound before it can be completed' do
|
117
|
+
proc do
|
118
|
+
EventMachine::run {
|
119
|
+
EM.add_timer(0.5) { EM.stop if EM.reactor_running? }
|
120
|
+
|
121
|
+
Blather::Stream::Client.start @client, @jid || Blather::JID.new('n@d/r'), 'pass', '127.0.0.1', 50000 - rand(1000)
|
122
|
+
}
|
123
|
+
end.must_raise Blather::Stream::ConnectionFailed
|
124
|
+
end
|
125
|
+
|
114
126
|
it 'starts the stream once the connection is complete' do
|
115
127
|
mocked_server(1) { |val, _| EM.stop; val.must_match(/stream:stream/) }
|
116
128
|
end
|
@@ -14,13 +14,15 @@ describe Blather::Stream::Component do
|
|
14
14
|
@client.stubs(:unbind) unless @client.respond_to?(:unbind)
|
15
15
|
@client.stubs(:jid=) unless @client.respond_to?(:jid=)
|
16
16
|
|
17
|
+
port = 50000 - rand(1000)
|
18
|
+
|
17
19
|
MockServer.any_instance.expects(:receive_data).send(*(times ? [:times, times] : [:at_least, 1])).with &block
|
18
20
|
EventMachine::run {
|
19
21
|
# Mocked server
|
20
|
-
EventMachine::start_server '127.0.0.1',
|
22
|
+
EventMachine::start_server '127.0.0.1', port, ServerMock
|
21
23
|
|
22
24
|
# Blather::Stream connection
|
23
|
-
EM.connect('127.0.0.1',
|
25
|
+
EM.connect('127.0.0.1', port, Blather::Stream::Component, @client, @jid || 'comp.id', 'secret') { |c| @stream = c }
|
24
26
|
}
|
25
27
|
end
|
26
28
|
|
@@ -55,6 +57,17 @@ describe Blather::Stream::Component do
|
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
60
|
+
it 'raises a NoConnection exception if the connection is unbound before it can be completed' do
|
61
|
+
@client = mock
|
62
|
+
proc do
|
63
|
+
EventMachine::run {
|
64
|
+
EM.add_timer(0.5) { EM.stop if EM.reactor_running? }
|
65
|
+
|
66
|
+
Blather::Stream::Component.start @client, @jid || Blather::JID.new('n@d/r'), 'pass', '127.0.0.1', 50000 - rand(1000)
|
67
|
+
}
|
68
|
+
end.must_raise Blather::Stream::ConnectionFailed
|
69
|
+
end
|
70
|
+
|
58
71
|
it 'starts the stream once the connection is complete' do
|
59
72
|
mocked_server(1) { |val, _| EM.stop; val.must_match(/stream:stream/) }
|
60
73
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blather
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,23 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-11-24 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: eventmachine
|
17
|
-
requirement: &
|
16
|
+
requirement: &2151820120 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
|
-
- -
|
19
|
+
- - ! '>='
|
21
20
|
- !ruby/object:Gem::Version
|
22
21
|
version: 0.12.6
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2151820120
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: nokogiri
|
28
|
-
requirement: &
|
27
|
+
requirement: &2151817400 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ~>
|
@@ -33,21 +32,21 @@ dependencies:
|
|
33
32
|
version: 1.4.0
|
34
33
|
type: :runtime
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *2151817400
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: niceogiri
|
39
|
-
requirement: &
|
38
|
+
requirement: &2151816340 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ! '>='
|
43
42
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.0
|
43
|
+
version: 0.1.0
|
45
44
|
type: :runtime
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *2151816340
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
48
|
name: activesupport
|
50
|
-
requirement: &
|
49
|
+
requirement: &2151814180 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ! '>='
|
@@ -55,10 +54,10 @@ dependencies:
|
|
55
54
|
version: 3.0.7
|
56
55
|
type: :runtime
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
57
|
+
version_requirements: *2151814180
|
59
58
|
- !ruby/object:Gem::Dependency
|
60
59
|
name: minitest
|
61
|
-
requirement: &
|
60
|
+
requirement: &2151826240 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
63
|
- - ~>
|
@@ -66,10 +65,10 @@ dependencies:
|
|
66
65
|
version: 1.7.1
|
67
66
|
type: :development
|
68
67
|
prerelease: false
|
69
|
-
version_requirements: *
|
68
|
+
version_requirements: *2151826240
|
70
69
|
- !ruby/object:Gem::Dependency
|
71
70
|
name: mocha
|
72
|
-
requirement: &
|
71
|
+
requirement: &2151823960 !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
74
|
- - ~>
|
@@ -77,10 +76,10 @@ dependencies:
|
|
77
76
|
version: 0.9.12
|
78
77
|
type: :development
|
79
78
|
prerelease: false
|
80
|
-
version_requirements: *
|
79
|
+
version_requirements: *2151823960
|
81
80
|
- !ruby/object:Gem::Dependency
|
82
81
|
name: bundler
|
83
|
-
requirement: &
|
82
|
+
requirement: &2151822020 !ruby/object:Gem::Requirement
|
84
83
|
none: false
|
85
84
|
requirements:
|
86
85
|
- - ~>
|
@@ -88,10 +87,10 @@ dependencies:
|
|
88
87
|
version: 1.0.0
|
89
88
|
type: :development
|
90
89
|
prerelease: false
|
91
|
-
version_requirements: *
|
90
|
+
version_requirements: *2151822020
|
92
91
|
- !ruby/object:Gem::Dependency
|
93
92
|
name: rcov
|
94
|
-
requirement: &
|
93
|
+
requirement: &2151832740 !ruby/object:Gem::Requirement
|
95
94
|
none: false
|
96
95
|
requirements:
|
97
96
|
- - ~>
|
@@ -99,10 +98,10 @@ dependencies:
|
|
99
98
|
version: 0.9.9
|
100
99
|
type: :development
|
101
100
|
prerelease: false
|
102
|
-
version_requirements: *
|
101
|
+
version_requirements: *2151832740
|
103
102
|
- !ruby/object:Gem::Dependency
|
104
103
|
name: yard
|
105
|
-
requirement: &
|
104
|
+
requirement: &2151843420 !ruby/object:Gem::Requirement
|
106
105
|
none: false
|
107
106
|
requirements:
|
108
107
|
- - ~>
|
@@ -110,10 +109,10 @@ dependencies:
|
|
110
109
|
version: 0.6.1
|
111
110
|
type: :development
|
112
111
|
prerelease: false
|
113
|
-
version_requirements: *
|
112
|
+
version_requirements: *2151843420
|
114
113
|
- !ruby/object:Gem::Dependency
|
115
114
|
name: rake
|
116
|
-
requirement: &
|
115
|
+
requirement: &2151848800 !ruby/object:Gem::Requirement
|
117
116
|
none: false
|
118
117
|
requirements:
|
119
118
|
- - ! '>='
|
@@ -121,10 +120,10 @@ dependencies:
|
|
121
120
|
version: '0'
|
122
121
|
type: :development
|
123
122
|
prerelease: false
|
124
|
-
version_requirements: *
|
123
|
+
version_requirements: *2151848800
|
125
124
|
- !ruby/object:Gem::Dependency
|
126
125
|
name: guard-minitest
|
127
|
-
requirement: &
|
126
|
+
requirement: &2151861200 !ruby/object:Gem::Requirement
|
128
127
|
none: false
|
129
128
|
requirements:
|
130
129
|
- - ! '>='
|
@@ -132,10 +131,10 @@ dependencies:
|
|
132
131
|
version: '0'
|
133
132
|
type: :development
|
134
133
|
prerelease: false
|
135
|
-
version_requirements: *
|
134
|
+
version_requirements: *2151861200
|
136
135
|
- !ruby/object:Gem::Dependency
|
137
136
|
name: bluecloth
|
138
|
-
requirement: &
|
137
|
+
requirement: &2151857080 !ruby/object:Gem::Requirement
|
139
138
|
none: false
|
140
139
|
requirements:
|
141
140
|
- - ! '>='
|
@@ -143,10 +142,10 @@ dependencies:
|
|
143
142
|
version: '0'
|
144
143
|
type: :development
|
145
144
|
prerelease: false
|
146
|
-
version_requirements: *
|
145
|
+
version_requirements: *2151857080
|
147
146
|
- !ruby/object:Gem::Dependency
|
148
147
|
name: growl_notify
|
149
|
-
requirement: &
|
148
|
+
requirement: &2151869860 !ruby/object:Gem::Requirement
|
150
149
|
none: false
|
151
150
|
requirements:
|
152
151
|
- - ! '>='
|
@@ -154,10 +153,10 @@ dependencies:
|
|
154
153
|
version: '0'
|
155
154
|
type: :development
|
156
155
|
prerelease: false
|
157
|
-
version_requirements: *
|
156
|
+
version_requirements: *2151869860
|
158
157
|
- !ruby/object:Gem::Dependency
|
159
158
|
name: rb-fsevent
|
160
|
-
requirement: &
|
159
|
+
requirement: &2151865360 !ruby/object:Gem::Requirement
|
161
160
|
none: false
|
162
161
|
requirements:
|
163
162
|
- - ! '>='
|
@@ -165,7 +164,7 @@ dependencies:
|
|
165
164
|
version: '0'
|
166
165
|
type: :development
|
167
166
|
prerelease: false
|
168
|
-
version_requirements: *
|
167
|
+
version_requirements: *2151865360
|
169
168
|
description: An XMPP DSL for Ruby written on top of EventMachine and Nokogiri
|
170
169
|
email: sprsquish@gmail.com
|
171
170
|
executables: []
|
@@ -313,7 +312,6 @@ files:
|
|
313
312
|
- yard/templates/default/class/html/handlers.erb
|
314
313
|
- yard/templates/default/class/setup.rb
|
315
314
|
- yard/templates/default/class/text/handlers.erb
|
316
|
-
has_rdoc: true
|
317
315
|
homepage: http://github.com/sprsquish/blather
|
318
316
|
licenses: []
|
319
317
|
post_install_message:
|
@@ -335,7 +333,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
335
333
|
version: '0'
|
336
334
|
requirements: []
|
337
335
|
rubyforge_project:
|
338
|
-
rubygems_version: 1.
|
336
|
+
rubygems_version: 1.8.10
|
339
337
|
signing_key:
|
340
338
|
specification_version: 3
|
341
339
|
summary: Simpler XMPP built for speed
|
@@ -390,3 +388,4 @@ test_files:
|
|
390
388
|
- spec/blather/xmpp_node_spec.rb
|
391
389
|
- spec/fixtures/pubsub.rb
|
392
390
|
- spec/spec_helper.rb
|
391
|
+
has_rdoc:
|