blather 0.5.2 → 0.5.3
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/CHANGELOG +3 -0
- data/lib/blather.rb +3 -2
- data/lib/blather/client/client.rb +4 -0
- data/lib/blather/stanza/iq/ping.rb +50 -0
- data/lib/blather/version.rb +1 -1
- data/spec/blather/client/client_spec.rb +7 -0
- data/spec/blather/stanza/iq/ping_spec.rb +41 -0
- metadata +8 -20
data/CHANGELOG
CHANGED
data/lib/blather.rb
CHANGED
@@ -28,10 +28,11 @@
|
|
28
28
|
|
29
29
|
blather/stanza
|
30
30
|
blather/stanza/iq
|
31
|
-
blather/stanza/iq/query
|
32
31
|
blather/stanza/iq/command
|
33
|
-
blather/stanza/iq/roster
|
34
32
|
blather/stanza/iq/ibb
|
33
|
+
blather/stanza/iq/ping
|
34
|
+
blather/stanza/iq/query
|
35
|
+
blather/stanza/iq/roster
|
35
36
|
blather/stanza/iq/s5b
|
36
37
|
blather/stanza/iq/si
|
37
38
|
blather/stanza/iq/vcard
|
@@ -226,6 +226,10 @@ module Blather
|
|
226
226
|
# write StanzaError.new(iq, 'service-unavailable', :cancel).to_node
|
227
227
|
# end
|
228
228
|
|
229
|
+
register_handler :ping, :type => :get do |ping|
|
230
|
+
write ping.reply
|
231
|
+
end
|
232
|
+
|
229
233
|
register_handler :status do |status|
|
230
234
|
roster[status.from].status = status if roster[status.from]
|
231
235
|
nil
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Blather
|
2
|
+
class Stanza
|
3
|
+
class Iq
|
4
|
+
|
5
|
+
# # Ping Stanza
|
6
|
+
#
|
7
|
+
# [XEP-0199: XMPP Ping](http://xmpp.org/extensions/xep-0199.html)
|
8
|
+
#
|
9
|
+
# This is a base class for any Ping based Iq stanzas.
|
10
|
+
#
|
11
|
+
# @handler :ping
|
12
|
+
class Ping < Iq
|
13
|
+
# @private
|
14
|
+
register :ping, :ping, 'urn:xmpp:ping'
|
15
|
+
|
16
|
+
# Overrides the parent method to ensure a ping node is created
|
17
|
+
#
|
18
|
+
# @see Blather::Stanza::Iq.new
|
19
|
+
def self.new(type = :get, to = nil, id = nil)
|
20
|
+
node = super
|
21
|
+
node.ping
|
22
|
+
node
|
23
|
+
end
|
24
|
+
|
25
|
+
# Overrides the parent method to ensure the current ping node is destroyed
|
26
|
+
#
|
27
|
+
# @see Blather::Stanza::Iq#inherit
|
28
|
+
def inherit(node)
|
29
|
+
ping.remove
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
# Ping node accessor
|
34
|
+
# If a ping node exists it will be returned.
|
35
|
+
# Otherwise a new node will be created and returned
|
36
|
+
#
|
37
|
+
# @return [Balather::XMPPNode]
|
38
|
+
def ping
|
39
|
+
p = find_first 'ns:ping', :ns => self.class.registered_ns
|
40
|
+
|
41
|
+
unless p
|
42
|
+
(self << (p = XMPPNode.new('ping', self.document)))
|
43
|
+
p.namespace = self.class.registered_ns
|
44
|
+
end
|
45
|
+
p
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/blather/version.rb
CHANGED
@@ -291,6 +291,13 @@ describe 'Blather::Client default handlers' do
|
|
291
291
|
# @client.receive_data get
|
292
292
|
# end
|
293
293
|
|
294
|
+
it 'responds to s2c pings with a pong' do
|
295
|
+
ping = Blather::Stanza::Iq::Ping.new :get
|
296
|
+
pong = ping.reply
|
297
|
+
@client.expects(:write).with { |n| n.to_s.must_equal pong.to_s }
|
298
|
+
@client.receive_data ping
|
299
|
+
end
|
300
|
+
|
294
301
|
it 'handles status changes by updating the roster if the status is from a Blather::JID in the roster' do
|
295
302
|
jid = 'friend@jabber.local'
|
296
303
|
status = Blather::Stanza::Presence::Status.new :away
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
def ping_xml
|
4
|
+
<<-XML
|
5
|
+
<iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='s2c1' type='get'>
|
6
|
+
<ping xmlns='urn:xmpp:ping'/>
|
7
|
+
</iq>
|
8
|
+
XML
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Blather::Stanza::Iq::Ping do
|
12
|
+
it 'registers itself' do
|
13
|
+
Blather::XMPPNode.class_from_registration(:ping, 'urn:xmpp:ping').must_equal Blather::Stanza::Iq::Ping
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can be imported' do
|
17
|
+
doc = parse_stanza ping_xml
|
18
|
+
node = Blather::XMPPNode.import(doc.root)
|
19
|
+
node.must_be_instance_of Blather::Stanza::Iq::Ping
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'ensures a ping node is present on create' do
|
23
|
+
iq = Blather::Stanza::Iq::Ping.new
|
24
|
+
iq.xpath('ns:ping', :ns => 'urn:xmpp:ping').wont_be_empty
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'ensures a ping node exists when calling #ping' do
|
28
|
+
iq = Blather::Stanza::Iq::Ping.new
|
29
|
+
iq.ping.remove
|
30
|
+
iq.xpath('ns:ping', :ns => 'urn:xmpp:ping').must_be_empty
|
31
|
+
|
32
|
+
iq.ping.wont_be_nil
|
33
|
+
iq.xpath('ns:ping', :ns => 'urn:xmpp:ping').wont_be_empty
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'responds with an empty IQ' do
|
37
|
+
ping = Blather::Stanza::Iq::Ping.new :get, 'one@example.com', 'abc123'
|
38
|
+
ping.from = 'two@example.com'
|
39
|
+
ping.reply.must_equal Blather::Stanza::Iq.new(:result, 'two@example.com', 'abc123')
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blather
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
8
|
+
- 3
|
9
|
+
version: 0.5.3
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Jeff Smick
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-06-
|
17
|
+
date: 2011-06-26 00:00:00 +01:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ~>
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 35
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
- 12
|
@@ -42,7 +40,6 @@ dependencies:
|
|
42
40
|
requirements:
|
43
41
|
- - ">="
|
44
42
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 7
|
46
43
|
segments:
|
47
44
|
- 1
|
48
45
|
- 4
|
@@ -58,7 +55,6 @@ dependencies:
|
|
58
55
|
requirements:
|
59
56
|
- - ">="
|
60
57
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 23
|
62
58
|
segments:
|
63
59
|
- 0
|
64
60
|
- 0
|
@@ -74,7 +70,6 @@ dependencies:
|
|
74
70
|
requirements:
|
75
71
|
- - ">="
|
76
72
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 9
|
78
73
|
segments:
|
79
74
|
- 1
|
80
75
|
- 7
|
@@ -90,7 +85,6 @@ dependencies:
|
|
90
85
|
requirements:
|
91
86
|
- - ">="
|
92
87
|
- !ruby/object:Gem::Version
|
93
|
-
hash: 9
|
94
88
|
segments:
|
95
89
|
- 3
|
96
90
|
- 0
|
@@ -106,7 +100,6 @@ dependencies:
|
|
106
100
|
requirements:
|
107
101
|
- - ~>
|
108
102
|
- !ruby/object:Gem::Version
|
109
|
-
hash: 9
|
110
103
|
segments:
|
111
104
|
- 1
|
112
105
|
- 7
|
@@ -122,7 +115,6 @@ dependencies:
|
|
122
115
|
requirements:
|
123
116
|
- - ~>
|
124
117
|
- !ruby/object:Gem::Version
|
125
|
-
hash: 35
|
126
118
|
segments:
|
127
119
|
- 0
|
128
120
|
- 9
|
@@ -138,7 +130,6 @@ dependencies:
|
|
138
130
|
requirements:
|
139
131
|
- - ~>
|
140
132
|
- !ruby/object:Gem::Version
|
141
|
-
hash: 23
|
142
133
|
segments:
|
143
134
|
- 1
|
144
135
|
- 0
|
@@ -154,7 +145,6 @@ dependencies:
|
|
154
145
|
requirements:
|
155
146
|
- - ~>
|
156
147
|
- !ruby/object:Gem::Version
|
157
|
-
hash: 41
|
158
148
|
segments:
|
159
149
|
- 0
|
160
150
|
- 9
|
@@ -170,7 +160,6 @@ dependencies:
|
|
170
160
|
requirements:
|
171
161
|
- - ~>
|
172
162
|
- !ruby/object:Gem::Version
|
173
|
-
hash: 5
|
174
163
|
segments:
|
175
164
|
- 0
|
176
165
|
- 6
|
@@ -186,7 +175,6 @@ dependencies:
|
|
186
175
|
requirements:
|
187
176
|
- - ~>
|
188
177
|
- !ruby/object:Gem::Version
|
189
|
-
hash: 11
|
190
178
|
segments:
|
191
179
|
- 2
|
192
180
|
- 1
|
@@ -202,7 +190,6 @@ dependencies:
|
|
202
190
|
requirements:
|
203
191
|
- - ">="
|
204
192
|
- !ruby/object:Gem::Version
|
205
|
-
hash: 3
|
206
193
|
segments:
|
207
194
|
- 0
|
208
195
|
version: "0"
|
@@ -261,6 +248,7 @@ files:
|
|
261
248
|
- lib/blather/stanza/iq.rb
|
262
249
|
- lib/blather/stanza/iq/command.rb
|
263
250
|
- lib/blather/stanza/iq/ibb.rb
|
251
|
+
- lib/blather/stanza/iq/ping.rb
|
264
252
|
- lib/blather/stanza/iq/query.rb
|
265
253
|
- lib/blather/stanza/iq/roster.rb
|
266
254
|
- lib/blather/stanza/iq/s5b.rb
|
@@ -313,6 +301,7 @@ files:
|
|
313
301
|
- spec/blather/stanza/discos/disco_items_spec.rb
|
314
302
|
- spec/blather/stanza/iq/command_spec.rb
|
315
303
|
- spec/blather/stanza/iq/ibb_spec.rb
|
304
|
+
- spec/blather/stanza/iq/ping_spec.rb
|
316
305
|
- spec/blather/stanza/iq/query_spec.rb
|
317
306
|
- spec/blather/stanza/iq/roster_spec.rb
|
318
307
|
- spec/blather/stanza/iq/s5b_spec.rb
|
@@ -363,7 +352,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
363
352
|
requirements:
|
364
353
|
- - ">="
|
365
354
|
- !ruby/object:Gem::Version
|
366
|
-
hash: 3
|
367
355
|
segments:
|
368
356
|
- 0
|
369
357
|
version: "0"
|
@@ -372,14 +360,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
372
360
|
requirements:
|
373
361
|
- - ">="
|
374
362
|
- !ruby/object:Gem::Version
|
375
|
-
hash: 3
|
376
363
|
segments:
|
377
364
|
- 0
|
378
365
|
version: "0"
|
379
366
|
requirements: []
|
380
367
|
|
381
368
|
rubyforge_project:
|
382
|
-
rubygems_version: 1.
|
369
|
+
rubygems_version: 1.3.7
|
383
370
|
signing_key:
|
384
371
|
specification_version: 3
|
385
372
|
summary: Simpler XMPP built for speed
|
@@ -399,6 +386,7 @@ test_files:
|
|
399
386
|
- spec/blather/stanza/discos/disco_items_spec.rb
|
400
387
|
- spec/blather/stanza/iq/command_spec.rb
|
401
388
|
- spec/blather/stanza/iq/ibb_spec.rb
|
389
|
+
- spec/blather/stanza/iq/ping_spec.rb
|
402
390
|
- spec/blather/stanza/iq/query_spec.rb
|
403
391
|
- spec/blather/stanza/iq/roster_spec.rb
|
404
392
|
- spec/blather/stanza/iq/s5b_spec.rb
|