blather 0.2.3 → 0.3.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.
- data/README.rdoc +7 -4
- data/Rakefile +3 -1
- data/examples/print_heirarchy.rb +76 -0
- data/lib/blather.rb +3 -3
- data/lib/blather/client.rb +4 -247
- data/lib/blather/client/client.rb +168 -0
- data/lib/blather/client/dsl.rb +99 -0
- data/lib/blather/errors.rb +5 -0
- data/lib/blather/errors/sasl_error.rb +6 -70
- data/lib/blather/errors/stanza_error.rb +12 -176
- data/lib/blather/errors/stream_error.rb +8 -186
- data/lib/blather/stanza.rb +2 -3
- data/lib/blather/stanza/{iq/disco.rb → disco.rb} +1 -3
- data/lib/blather/stanza/{iq/discos → disco}/disco_info.rb +3 -5
- data/lib/blather/stanza/{iq/discos → disco}/disco_items.rb +0 -2
- data/lib/blather/stanza/iq/query.rb +1 -1
- data/lib/blather/stanza/iq/roster.rb +2 -2
- data/lib/blather/stanza/pubsub/subscriber.rb +64 -0
- data/lib/blather/stream.rb +13 -7
- data/lib/blather/stream/component.rb +1 -1
- data/lib/blather/stream/parser.rb +11 -4
- data/lib/blather/stream/resource.rb +1 -1
- data/lib/blather/stream/sasl.rb +15 -9
- data/lib/blather/xmpp_node.rb +10 -4
- data/spec/blather/client/client_spec.rb +4 -0
- data/spec/blather/client/dsl_spec.rb +4 -0
- data/spec/blather/client_spec.rb +0 -0
- data/spec/blather/errors/sasl_error_spec.rb +2 -25
- data/spec/blather/errors/stanza_error_spec.rb +7 -18
- data/spec/blather/errors/stream_error_spec.rb +4 -15
- data/spec/blather/stanza/{iq/discos → discos}/disco_info_spec.rb +12 -12
- data/spec/blather/stanza/{iq/discos → discos}/disco_items_spec.rb +1 -1
- data/spec/blather/stanza/iq/query_spec.rb +7 -0
- data/spec/blather/stanza/iq/roster_spec.rb +21 -21
- data/spec/blather/stanza/pubsub/subscriber_spec.rb +70 -0
- data/spec/blather/stanza_spec.rb +1 -7
- data/spec/blather/stream/client_spec.rb +36 -7
- data/spec/spec_helper.rb +1 -1
- metadata +16 -18
- data/ext/Makefile +0 -149
- data/ext/mkmf.log +0 -30
- data/ext/push_parser.bundle +0 -0
- data/ext/push_parser.o +0 -0
- data/lib/autotest/discover.rb +0 -1
- data/lib/autotest/spec.rb +0 -60
- data/spec/blather/stanza/pubsub/event_spec.rb +0 -13
- data/spec/build_safe.rb +0 -20
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), *%w[.. .. ..
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[.. .. .. spec_helper])
|
2
2
|
|
3
3
|
def disco_info_xml
|
4
4
|
<<-XML
|
@@ -24,7 +24,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo' do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'has a node attribute' do
|
27
|
-
n = Blather::Stanza::Iq::DiscoInfo.new nil, [], []
|
27
|
+
n = Blather::Stanza::Iq::DiscoInfo.new nil, 'music', [], []
|
28
28
|
n.node.must_equal 'music'
|
29
29
|
n.node = :foo
|
30
30
|
n.node.must_equal 'foo'
|
@@ -55,7 +55,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
55
55
|
control = [ Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category]),
|
56
56
|
Stanza::Iq::DiscoInfo::Identity.new(*%w[name1 type1 category1])]
|
57
57
|
|
58
|
-
di = Stanza::Iq::DiscoInfo.new nil, ids
|
58
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, ids
|
59
59
|
di.identities.size.must_equal 2
|
60
60
|
di.identities.each { |i| control.include?(i).must_equal true }
|
61
61
|
end
|
@@ -64,7 +64,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
64
64
|
control = [ Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category]),
|
65
65
|
Stanza::Iq::DiscoInfo::Identity.new(*%w[name1 type1 category1])]
|
66
66
|
|
67
|
-
di = Stanza::Iq::DiscoInfo.new nil, control
|
67
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, control
|
68
68
|
di.identities.size.must_equal 2
|
69
69
|
di.identities.each { |i| control.include?(i).must_equal true }
|
70
70
|
end
|
@@ -72,7 +72,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
72
72
|
it 'takes a single hash as identity' do
|
73
73
|
control = [Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category])]
|
74
74
|
|
75
|
-
di = Stanza::Iq::DiscoInfo.new nil, {:name => 'name', :type => 'type', :category => 'category'}
|
75
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, {:name => 'name', :type => 'type', :category => 'category'}
|
76
76
|
di.identities.size.must_equal 1
|
77
77
|
di.identities.each { |i| control.include?(i).must_equal true }
|
78
78
|
end
|
@@ -80,7 +80,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
80
80
|
it 'takes a single identity object as identity' do
|
81
81
|
control = [Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category])]
|
82
82
|
|
83
|
-
di = Stanza::Iq::DiscoInfo.new nil, control.first
|
83
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, control.first
|
84
84
|
di.identities.size.must_equal 1
|
85
85
|
di.identities.each { |i| control.include?(i).must_equal true }
|
86
86
|
end
|
@@ -94,7 +94,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo identities' do
|
|
94
94
|
control = [ Stanza::Iq::DiscoInfo::Identity.new(*%w[name type category]),
|
95
95
|
Stanza::Iq::DiscoInfo::Identity.new(*%w[name1 type1 category1])]
|
96
96
|
|
97
|
-
di = Stanza::Iq::DiscoInfo.new nil, ids
|
97
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, ids
|
98
98
|
di.identities.size.must_equal 2
|
99
99
|
di.identities.each { |i| control.include?(i).must_equal true }
|
100
100
|
end
|
@@ -105,7 +105,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
105
105
|
features = %w[feature1 feature2 feature3]
|
106
106
|
control = features.map { |f| Stanza::Iq::DiscoInfo::Feature.new f }
|
107
107
|
|
108
|
-
di = Stanza::Iq::DiscoInfo.new nil, [], features
|
108
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, [], features
|
109
109
|
di.features.size.must_equal 3
|
110
110
|
di.features.each { |f| control.include?(f).must_equal true }
|
111
111
|
end
|
@@ -114,7 +114,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
114
114
|
features = %w[feature1 feature2 feature3]
|
115
115
|
control = features.map { |f| Stanza::Iq::DiscoInfo::Feature.new f }
|
116
116
|
|
117
|
-
di = Stanza::Iq::DiscoInfo.new nil, [], control
|
117
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, [], control
|
118
118
|
di.features.size.must_equal 3
|
119
119
|
di.features.each { |f| control.include?(f).must_equal true }
|
120
120
|
end
|
@@ -122,7 +122,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
122
122
|
it 'takes a single string' do
|
123
123
|
control = [Stanza::Iq::DiscoInfo::Feature.new('feature1')]
|
124
124
|
|
125
|
-
di = Stanza::Iq::DiscoInfo.new nil, [], 'feature1'
|
125
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, [], 'feature1'
|
126
126
|
di.features.size.must_equal 1
|
127
127
|
di.features.each { |f| control.include?(f).must_equal true }
|
128
128
|
end
|
@@ -130,7 +130,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
130
130
|
it 'takes a single Feature object' do
|
131
131
|
control = [Stanza::Iq::DiscoInfo::Feature.new('feature1')]
|
132
132
|
|
133
|
-
di = Stanza::Iq::DiscoInfo.new nil, [], control.first
|
133
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, [], control.first
|
134
134
|
di.features.size.must_equal 1
|
135
135
|
di.features.each { |f| control.include?(f).must_equal true }
|
136
136
|
end
|
@@ -140,7 +140,7 @@ describe 'Blather::Stanza::Iq::DiscoInfo features' do
|
|
140
140
|
control = features.map { |f| Stanza::Iq::DiscoInfo::Feature.new f }
|
141
141
|
features[1] = control[1]
|
142
142
|
|
143
|
-
di = Stanza::Iq::DiscoInfo.new nil, [], features
|
143
|
+
di = Stanza::Iq::DiscoInfo.new nil, nil, [], features
|
144
144
|
di.features.size.must_equal 3
|
145
145
|
di.features.each { |f| control.include?(f).must_equal true }
|
146
146
|
end
|
@@ -19,6 +19,13 @@ describe 'Blather::Stanza::Iq::Query' do
|
|
19
19
|
query.children.detect { |n| n.element_name == 'query' }.wont_be_nil
|
20
20
|
end
|
21
21
|
|
22
|
+
[:get, :set, :result, :error].each do |type|
|
23
|
+
it "can be set as \"#{type}\"" do
|
24
|
+
query = Stanza::Iq::Query.new type
|
25
|
+
query.type.must_equal type
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
22
29
|
it 'sets type to "result" on reply' do
|
23
30
|
query = Stanza::Iq::Query.new
|
24
31
|
query.type.must_equal :get
|
@@ -1,27 +1,27 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), *%w[.. .. .. spec_helper])
|
2
2
|
|
3
3
|
def roster_xml
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
4
|
+
<<-XML
|
5
|
+
<iq to='juliet@example.com/balcony' type='result' id='roster_1'>
|
6
|
+
<query xmlns='jabber:iq:roster'>
|
7
|
+
<item jid='romeo@example.net'
|
8
|
+
name='Romeo'
|
9
|
+
subscription='both'>
|
10
|
+
<group>Friends</group>
|
11
|
+
</item>
|
12
|
+
<item jid='mercutio@example.org'
|
13
|
+
name='Mercutio'
|
14
|
+
subscription='from'>
|
15
|
+
<group>Friends</group>
|
16
|
+
</item>
|
17
|
+
<item jid='benvolio@example.org'
|
18
|
+
name='Benvolio'
|
19
|
+
subscription='both'>
|
20
|
+
<group>Friends</group>
|
21
|
+
</item>
|
22
|
+
</query>
|
23
|
+
</iq>
|
24
|
+
XML
|
25
25
|
end
|
26
26
|
|
27
27
|
describe 'Blather::Stanza::Iq::Roster' do
|
@@ -0,0 +1,70 @@
|
|
1
|
+
__END__
|
2
|
+
require File.join(File.dirname(__FILE__), *%w[.. .. .. spec_helper])
|
3
|
+
require File.join(File.dirname(__FILE__), *%w[.. .. .. fixtures pubsub])
|
4
|
+
|
5
|
+
describe 'Blather::Stanza::PubSub::Subscriber' do
|
6
|
+
it 'can request a subscription' do
|
7
|
+
sub = Blather::Stanza::PubSub.subscribe 'host.name', 'node_name', 'j@i.d'
|
8
|
+
sub.to.must_equal JID.new('host.name')
|
9
|
+
sub.set?.must_equal true
|
10
|
+
sub.find_first('//pubsub/subscription[@node="node_name" and @jid="j@i.d"]').wont_be_nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'can request an unsubscribe' do
|
14
|
+
sub = Blather::Stanza::PubSub.unsubscribe 'host.name', 'node_name', 'j@i.d'
|
15
|
+
sub.to.must_equal JID.new('host.name')
|
16
|
+
sub.set?.must_equal true
|
17
|
+
sub.find_first('//pubsub/unsubscribe[@node="node_name" and @jid="j@i.d"]').wont_be_nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'can request an unsubscribe with a subscription id' do
|
21
|
+
sub = Blather::Stanza::PubSub.unsubscribe 'host.name', 'node_name', 'j@i.d', 'subid'
|
22
|
+
sub.to.must_equal JID.new('host.name')
|
23
|
+
sub.set?.must_equal true
|
24
|
+
sub.find_first('//pubsub/unsubscribe[@node="node_name" and @jid="j@i.d" and @subid="subid"]').wont_be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'knows if it is a subscription' do
|
28
|
+
node = XML::Document.string(subscriber_xml).root
|
29
|
+
stanza = Blather::Stanza::PubSub.import node
|
30
|
+
stanza.subscription?.wont_be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'knows if it is not a subscription' do
|
34
|
+
node = XML::Document.string(unsubscribe_xml).root
|
35
|
+
stanza = Blather::Stanza::PubSub.import node
|
36
|
+
stanza.subscription?.must_be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'knows the values of a subscription' do
|
40
|
+
node = XML::Document.string(subscriber_xml).root
|
41
|
+
stanza = Blather::Stanza::PubSub.import node
|
42
|
+
stanza.subscription.must_equal({
|
43
|
+
:node => 'princely_musings',
|
44
|
+
:jid => JID.new('francisco@denmark.lit'),
|
45
|
+
:subid => 'ba49252aaa4f5d320c24d3766f0bdcade78c78d3',
|
46
|
+
:subscription => 'subscribed'
|
47
|
+
})
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'knows if it is a unsubscribe' do
|
51
|
+
node = XML::Document.string(unsubscribe_xml).root
|
52
|
+
stanza = Blather::Stanza::PubSub.import node
|
53
|
+
stanza.unsubscribe?.wont_be_nil
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'knows if it is not a unsubscribe' do
|
57
|
+
node = XML::Document.string(subscriber_xml).root
|
58
|
+
stanza = Blather::Stanza::PubSub.import node
|
59
|
+
stanza.unsubscribe?.must_be_nil
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'knows the values of the unsubscribe' do
|
63
|
+
node = XML::Document.string(unsubscribe_xml).root
|
64
|
+
stanza = Blather::Stanza::PubSub.import node
|
65
|
+
stanza.unsubscribe.must_equal({
|
66
|
+
:node => 'princely_musings',
|
67
|
+
:jid => JID.new('francisco@denmark.lit')
|
68
|
+
})
|
69
|
+
end
|
70
|
+
end
|
data/spec/blather/stanza_spec.rb
CHANGED
@@ -96,12 +96,6 @@ describe 'Blather::Stanza' do
|
|
96
96
|
it 'can be converted into an error by error name' do
|
97
97
|
s = Stanza.new('message')
|
98
98
|
err = s.as_error 'internal-server-error', 'cancel'
|
99
|
-
err.
|
100
|
-
end
|
101
|
-
|
102
|
-
it 'can be converted into an error by error class' do
|
103
|
-
s = Stanza.new('message')
|
104
|
-
err = s.as_error StanzaError::InternalServerError, 'cancel'
|
105
|
-
err.must_be_instance_of StanzaError::InternalServerError
|
99
|
+
err.name.must_equal :internal_server_error
|
106
100
|
end
|
107
101
|
end
|
@@ -155,7 +155,7 @@ describe 'Blather::Stream::Client' do
|
|
155
155
|
it 'sends client an error on stream:error' do
|
156
156
|
@client = mock()
|
157
157
|
@client.expects(:call).with do |v|
|
158
|
-
v.
|
158
|
+
v.name.must_equal :conflict
|
159
159
|
v.text.must_equal 'Already signed in'
|
160
160
|
v.to_s.must_equal "Stream Error (conflict): #{v.text}"
|
161
161
|
end
|
@@ -353,7 +353,7 @@ describe 'Blather::Stream::Client' do
|
|
353
353
|
when :started
|
354
354
|
state = :auth_sent
|
355
355
|
server.send_data "<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl' />"
|
356
|
-
val.must_equal('<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="ANONYMOUS"
|
356
|
+
val.must_equal('<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="ANONYMOUS"/>')
|
357
357
|
|
358
358
|
when :auth_sent
|
359
359
|
EM.stop
|
@@ -368,12 +368,41 @@ describe 'Blather::Stream::Client' do
|
|
368
368
|
end
|
369
369
|
end
|
370
370
|
|
371
|
-
it '
|
371
|
+
it 'connects via ANONYMOUS if the JID has a blank node' do
|
372
|
+
state = nil
|
373
|
+
@jid = JID.new '@d'
|
374
|
+
|
375
|
+
mocked_server(3) do |val, server|
|
376
|
+
case state
|
377
|
+
when nil
|
378
|
+
state = :started
|
379
|
+
server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'><stream:features><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism></mechanisms></stream:features>"
|
380
|
+
val.must_match(/stream:stream/)
|
381
|
+
|
382
|
+
when :started
|
383
|
+
state = :auth_sent
|
384
|
+
server.send_data "<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl' />"
|
385
|
+
val.must_equal('<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="ANONYMOUS"/>')
|
386
|
+
|
387
|
+
when :auth_sent
|
388
|
+
EM.stop
|
389
|
+
state = :complete
|
390
|
+
val.must_match(/stream:stream/)
|
391
|
+
|
392
|
+
else
|
393
|
+
EM.stop
|
394
|
+
false
|
395
|
+
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
it 'tries each possible mechanism until it fails completely' do
|
372
401
|
state = nil
|
373
402
|
@client = mock()
|
374
403
|
@client.expects(:call).with do |n|
|
375
404
|
n.must_be_kind_of(SASLError)
|
376
|
-
n.
|
405
|
+
n.name.must_equal :not_authorized
|
377
406
|
end
|
378
407
|
|
379
408
|
mocked_server(5) do |val, server|
|
@@ -472,7 +501,7 @@ describe 'Blather::Stream::Client' do
|
|
472
501
|
it "fails on #{error_type}" do
|
473
502
|
@client = mock()
|
474
503
|
@client.expects(:call).with do |n|
|
475
|
-
n.
|
504
|
+
n.name.must_equal error_type.gsub('-','_').to_sym
|
476
505
|
end
|
477
506
|
state = nil
|
478
507
|
mocked_server(3) do |val, server|
|
@@ -601,7 +630,7 @@ describe 'Blather::Stream::Client' do
|
|
601
630
|
state = nil
|
602
631
|
@client = mock()
|
603
632
|
@client.expects(:call).with do |n|
|
604
|
-
n.
|
633
|
+
n.name.must_equal :bad_request
|
605
634
|
end
|
606
635
|
mocked_server(3) do |val, server|
|
607
636
|
case state
|
@@ -695,7 +724,7 @@ describe 'Blather::Stream::Client' do
|
|
695
724
|
state = nil
|
696
725
|
@client = mock()
|
697
726
|
@client.expects(:call).with do |n|
|
698
|
-
n.
|
727
|
+
n.name.must_equal :internal_server_error
|
699
728
|
end
|
700
729
|
mocked_server(3) do |val, server|
|
701
730
|
case state
|
data/spec/spec_helper.rb
CHANGED
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Smick
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-05-
|
12
|
+
date: 2009-05-12 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -44,16 +44,13 @@ extra_rdoc_files:
|
|
44
44
|
files:
|
45
45
|
- examples/drb_client.rb
|
46
46
|
- examples/echo.rb
|
47
|
-
-
|
47
|
+
- examples/print_heirarchy.rb
|
48
48
|
- ext/extconf.rb
|
49
|
-
- ext/mkmf.log
|
50
|
-
- ext/push_parser.bundle
|
51
49
|
- ext/push_parser.c
|
52
|
-
- ext/push_parser.o
|
53
|
-
- lib/autotest/discover.rb
|
54
|
-
- lib/autotest/spec.rb
|
55
50
|
- lib/blather.rb
|
56
51
|
- lib/blather/client.rb
|
52
|
+
- lib/blather/client/client.rb
|
53
|
+
- lib/blather/client/dsl.rb
|
57
54
|
- lib/blather/core_ext/active_support.rb
|
58
55
|
- lib/blather/core_ext/libxml.rb
|
59
56
|
- lib/blather/errors.rb
|
@@ -64,16 +61,17 @@ files:
|
|
64
61
|
- lib/blather/roster.rb
|
65
62
|
- lib/blather/roster_item.rb
|
66
63
|
- lib/blather/stanza.rb
|
64
|
+
- lib/blather/stanza/disco.rb
|
65
|
+
- lib/blather/stanza/disco/disco_info.rb
|
66
|
+
- lib/blather/stanza/disco/disco_items.rb
|
67
67
|
- lib/blather/stanza/iq.rb
|
68
|
-
- lib/blather/stanza/iq/disco.rb
|
69
|
-
- lib/blather/stanza/iq/discos/disco_info.rb
|
70
|
-
- lib/blather/stanza/iq/discos/disco_items.rb
|
71
68
|
- lib/blather/stanza/iq/query.rb
|
72
69
|
- lib/blather/stanza/iq/roster.rb
|
73
70
|
- lib/blather/stanza/message.rb
|
74
71
|
- lib/blather/stanza/presence.rb
|
75
72
|
- lib/blather/stanza/presence/status.rb
|
76
73
|
- lib/blather/stanza/presence/subscription.rb
|
74
|
+
- lib/blather/stanza/pubsub/subscriber.rb
|
77
75
|
- lib/blather/stream.rb
|
78
76
|
- lib/blather/stream/client.rb
|
79
77
|
- lib/blather/stream/component.rb
|
@@ -110,11 +108,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
108
|
requirements: []
|
111
109
|
|
112
110
|
rubyforge_project: squishtech
|
113
|
-
rubygems_version: 1.3.
|
111
|
+
rubygems_version: 1.3.3
|
114
112
|
signing_key:
|
115
113
|
specification_version: 3
|
116
114
|
summary: An evented XMPP library written on EventMachine and libxml-ruby
|
117
115
|
test_files:
|
116
|
+
- spec/blather/client/client_spec.rb
|
117
|
+
- spec/blather/client/dsl_spec.rb
|
118
|
+
- spec/blather/client_spec.rb
|
118
119
|
- spec/blather/core_ext/libxml_spec.rb
|
119
120
|
- spec/blather/errors/sasl_error_spec.rb
|
120
121
|
- spec/blather/errors/stanza_error_spec.rb
|
@@ -123,8 +124,8 @@ test_files:
|
|
123
124
|
- spec/blather/jid_spec.rb
|
124
125
|
- spec/blather/roster_item_spec.rb
|
125
126
|
- spec/blather/roster_spec.rb
|
126
|
-
- spec/blather/stanza/
|
127
|
-
- spec/blather/stanza/
|
127
|
+
- spec/blather/stanza/discos/disco_info_spec.rb
|
128
|
+
- spec/blather/stanza/discos/disco_items_spec.rb
|
128
129
|
- spec/blather/stanza/iq/query_spec.rb
|
129
130
|
- spec/blather/stanza/iq/roster_spec.rb
|
130
131
|
- spec/blather/stanza/iq_spec.rb
|
@@ -132,12 +133,9 @@ test_files:
|
|
132
133
|
- spec/blather/stanza/presence/status_spec.rb
|
133
134
|
- spec/blather/stanza/presence/subscription_spec.rb
|
134
135
|
- spec/blather/stanza/presence_spec.rb
|
135
|
-
- spec/blather/stanza/pubsub/
|
136
|
+
- spec/blather/stanza/pubsub/subscriber_spec.rb
|
136
137
|
- spec/blather/stanza_spec.rb
|
137
138
|
- spec/blather/stream/client_spec.rb
|
138
139
|
- spec/blather/stream/component_spec.rb
|
139
140
|
- spec/blather/xmpp_node_spec.rb
|
140
|
-
- spec/build_safe.rb
|
141
141
|
- spec/spec_helper.rb
|
142
|
-
- examples/drb_client.rb
|
143
|
-
- examples/echo.rb
|