blather 1.2.0 → 2.0.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.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +7 -7
  3. data/CHANGELOG.md +8 -0
  4. data/blather.gemspec +6 -6
  5. data/lib/blather.rb +1 -1
  6. data/lib/blather/client/client.rb +30 -6
  7. data/lib/blather/version.rb +1 -1
  8. data/spec/blather/client/client_spec.rb +73 -68
  9. data/spec/blather/client/dsl/pubsub_spec.rb +121 -121
  10. data/spec/blather/client/dsl_spec.rb +9 -9
  11. data/spec/blather/errors/sasl_error_spec.rb +3 -3
  12. data/spec/blather/errors/stanza_error_spec.rb +26 -26
  13. data/spec/blather/errors/stream_error_spec.rb +22 -22
  14. data/spec/blather/errors_spec.rb +7 -7
  15. data/spec/blather/file_transfer_spec.rb +9 -9
  16. data/spec/blather/jid_spec.rb +29 -29
  17. data/spec/blather/roster_item_spec.rb +18 -18
  18. data/spec/blather/roster_spec.rb +18 -18
  19. data/spec/blather/stanza/discos/disco_info_spec.rb +56 -56
  20. data/spec/blather/stanza/discos/disco_items_spec.rb +33 -33
  21. data/spec/blather/stanza/iq/command_spec.rb +51 -51
  22. data/spec/blather/stanza/iq/ibb_spec.rb +15 -15
  23. data/spec/blather/stanza/iq/ping_spec.rb +8 -8
  24. data/spec/blather/stanza/iq/query_spec.rb +15 -15
  25. data/spec/blather/stanza/iq/roster_spec.rb +29 -29
  26. data/spec/blather/stanza/iq/s5b_spec.rb +7 -7
  27. data/spec/blather/stanza/iq/si_spec.rb +17 -17
  28. data/spec/blather/stanza/iq/vcard_spec.rb +19 -19
  29. data/spec/blather/stanza/iq_spec.rb +11 -11
  30. data/spec/blather/stanza/message/muc_user_spec.rb +32 -32
  31. data/spec/blather/stanza/message_spec.rb +53 -54
  32. data/spec/blather/stanza/presence/c_spec.rb +11 -11
  33. data/spec/blather/stanza/presence/muc_spec.rb +7 -7
  34. data/spec/blather/stanza/presence/muc_user_spec.rb +22 -22
  35. data/spec/blather/stanza/presence/status_spec.rb +33 -33
  36. data/spec/blather/stanza/presence/subscription_spec.rb +22 -22
  37. data/spec/blather/stanza/presence_spec.rb +30 -30
  38. data/spec/blather/stanza/pubsub/affiliations_spec.rb +11 -11
  39. data/spec/blather/stanza/pubsub/create_spec.rb +10 -10
  40. data/spec/blather/stanza/pubsub/event_spec.rb +24 -24
  41. data/spec/blather/stanza/pubsub/items_spec.rb +20 -20
  42. data/spec/blather/stanza/pubsub/publish_spec.rb +21 -21
  43. data/spec/blather/stanza/pubsub/retract_spec.rb +19 -19
  44. data/spec/blather/stanza/pubsub/subscribe_spec.rb +17 -17
  45. data/spec/blather/stanza/pubsub/subscription_spec.rb +28 -28
  46. data/spec/blather/stanza/pubsub/subscriptions_spec.rb +13 -13
  47. data/spec/blather/stanza/pubsub/unsubscribe_spec.rb +22 -22
  48. data/spec/blather/stanza/pubsub_owner/delete_spec.rb +9 -9
  49. data/spec/blather/stanza/pubsub_owner/purge_spec.rb +9 -9
  50. data/spec/blather/stanza/pubsub_owner_spec.rb +6 -6
  51. data/spec/blather/stanza/pubsub_spec.rb +15 -15
  52. data/spec/blather/stanza/x_spec.rb +53 -53
  53. data/spec/blather/stanza_spec.rb +39 -39
  54. data/spec/blather/stream/client_spec.rb +160 -160
  55. data/spec/blather/stream/component_spec.rb +8 -10
  56. data/spec/blather/stream/parser_spec.rb +25 -25
  57. data/spec/blather/stream/ssl_spec.rb +3 -3
  58. data/spec/blather/xmpp_node_spec.rb +9 -9
  59. data/spec/blather_spec.rb +1 -1
  60. data/spec/spec_helper.rb +1 -1
  61. metadata +26 -27
@@ -42,34 +42,32 @@ describe Blather::Stream::Component do
42
42
  when nil
43
43
  state = :started
44
44
  server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' id='12345'>"
45
- val.should match(/stream:stream/)
45
+ expect(val).to match(/stream:stream/)
46
46
 
47
47
  when :started
48
48
  server.send_data '<handshake/>'
49
49
  EM.stop
50
- val.should == "<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>"
50
+ expect(val).to eq("<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>")
51
51
 
52
52
  end
53
53
  end
54
54
  end
55
55
 
56
56
  it 'raises a NoConnection exception if the connection is unbound before it can be completed' do
57
- proc do
57
+ expect do
58
58
  EventMachine::run {
59
59
  EM.add_timer(0.5) { EM.stop if EM.reactor_running? }
60
60
 
61
61
  Blather::Stream::Component.start client, jid, 'pass', '127.0.0.1', 50000 - rand(1000)
62
62
  }
63
- end.should raise_error Blather::Stream::ConnectionFailed
63
+ end.to raise_error Blather::Stream::ConnectionFailed
64
64
  end
65
65
 
66
66
  it 'starts the stream once the connection is complete' do
67
- mocked_server(1) { |val, _| EM.stop; val.should match(/stream:stream/) }
67
+ mocked_server(1) { |val, _| EM.stop; expect(val).to match(/stream:stream/) }
68
68
  end
69
69
 
70
70
  it 'sends stanzas to the client when the stream is ready' do
71
- pending "This hangs the test suite" if jruby?
72
-
73
71
  client.stubs :post_init
74
72
  client.expects(:receive_data).with do |n|
75
73
  EM.stop
@@ -82,12 +80,12 @@ describe Blather::Stream::Component do
82
80
  when nil
83
81
  state = :started
84
82
  server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' id='12345'>"
85
- val.should match(/stream:stream/)
83
+ expect(val).to match(/stream:stream/)
86
84
 
87
85
  when :started
88
86
  server.send_data '<handshake/>'
89
87
  server.send_data "<message to='comp.id' from='d@e/f' type='chat' xml:lang='en'><body>Message!</body></message>"
90
- val.should == "<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>"
88
+ expect(val).to eq("<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>")
91
89
 
92
90
  end
93
91
  end
@@ -98,7 +96,7 @@ describe Blather::Stream::Component do
98
96
 
99
97
  msg = Blather::Stanza::Message.new 'to@jid.com', 'body'
100
98
  comp = Blather::Stream::Component.new nil, client, 'jid.com', 'pass'
101
- comp.expects(:send_data).with { |s| s.should match(/^<message[^>]*from="jid\.com"/) }
99
+ comp.expects(:send_data).with { |s| expect(s).to match(/^<message[^>]*from="jid\.com"/) }
102
100
  comp.send msg
103
101
  end
104
102
  end
@@ -21,19 +21,19 @@ describe Blather::Stream::Parser do
21
21
  def process(*data)
22
22
  client.latch = CountDownLatch.new 1
23
23
  data.each { |d| subject.receive_data d }
24
- client.latch.wait(2).should be true
24
+ expect(client.latch.wait(2)).to be true
25
25
  end
26
26
 
27
27
  def check_parse(data)
28
28
  process data
29
- client.data.size.should == 1
30
- client.data[0].to_s.gsub(/\n\s*/,'').should == data
29
+ expect(client.data.size).to eq(1)
30
+ expect(client.data[0].to_s.gsub(/\n\s*/,'')).to eq(data)
31
31
  end
32
32
 
33
33
  it 'handles fragmented parsing' do
34
34
  process '<foo>', '<bar/>', '</foo>'
35
- client.data.size.should == 1
36
- client.data[0].to_s.gsub(/\n\s*/,'').should == '<foo><bar/></foo>'
35
+ expect(client.data.size).to eq(1)
36
+ expect(client.data[0].to_s.gsub(/\n\s*/,'')).to eq('<foo><bar/></foo>')
37
37
  end
38
38
 
39
39
  it 'handles a basic example' do
@@ -95,41 +95,41 @@ describe Blather::Stream::Parser do
95
95
  "</message>"
96
96
  ]
97
97
  process *data
98
- client.data.size.should == 1
99
- Nokogiri::XML(client.data[0].to_s.gsub(/\n\s*/, '')).to_s.should == Nokogiri::XML(data.join).to_s
100
- client.data[0].xpath('//*[namespace-uri()="urn:ietf:params:xml:ns:xmpp-stanzas"]').size.should == 2
98
+ expect(client.data.size).to eq(1)
99
+ expect(Nokogiri::XML(client.data[0].to_s.gsub(/\n\s*/, '')).to_s).to eq(Nokogiri::XML(data.join).to_s)
100
+ expect(client.data[0].xpath('//*[namespace-uri()="urn:ietf:params:xml:ns:xmpp-stanzas"]').size).to eq(2)
101
101
  end
102
102
 
103
103
  it 'handles not absolute namespaces' do
104
- lambda do
104
+ expect do
105
105
  process '<iq type="result" id="blather0007" to="n@d/r"><vCard xmlns="vcard-temp"/></iq>'
106
- end.should_not raise_error
106
+ end.not_to raise_error
107
107
  end
108
108
 
109
109
  it 'responds with stream:stream as a separate response' do
110
110
  process '<stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" to="example.com" version="1.0">',
111
111
  '<foo/>'
112
- client.data.size.should == 2
113
- client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size.should == 1
114
- client.data[1].to_s.should == '<foo/>'
112
+ expect(client.data.size).to eq(2)
113
+ expect(client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size).to eq(1)
114
+ expect(client.data[1].to_s).to eq('<foo/>')
115
115
  end
116
116
 
117
117
  it 'response with stream:end when receiving </stream:stream>' do
118
118
  process '<stream:stream xmlns:stream="http://etherx.jabber.org/streams"/>'
119
- client.data.size.should == 2
120
- client.data[1].to_s.should == '<stream:end xmlns:stream="http://etherx.jabber.org/streams"/>'
119
+ expect(client.data.size).to eq(2)
120
+ expect(client.data[1].to_s).to eq('<stream:end xmlns:stream="http://etherx.jabber.org/streams"/>')
121
121
  end
122
122
 
123
123
  it 'raises ParseError when an error is sent' do
124
- lambda { process "<stream:stream>" }.should raise_error(Blather::ParseError)
124
+ expect { process "<stream:stream>" }.to raise_error(Blather::ParseError)
125
125
  end
126
126
 
127
127
  it 'handles stream stanzas without an issue' do
128
128
  process '<stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" to="example.com" version="1.0">',
129
129
  '<stream:features/>'
130
- client.data.size.should == 2
131
- client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size.should == 1
132
- client.data[1].to_s.should == '<stream:features xmlns:stream="http://etherx.jabber.org/streams"/>'
130
+ expect(client.data.size).to eq(2)
131
+ expect(client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size).to eq(1)
132
+ expect(client.data[1].to_s).to eq('<stream:features xmlns:stream="http://etherx.jabber.org/streams"/>')
133
133
  end
134
134
 
135
135
  it 'ignores the client namespace on stanzas' do
@@ -137,9 +137,9 @@ describe Blather::Stream::Parser do
137
137
  "<body>exit</body>",
138
138
  "<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>exit</body></html>",
139
139
  "</message>"
140
- client.data.size.should == 1
141
- client.data[0].document.xpath('/message/body[.="exit"]').should_not be_empty
142
- client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml').should_not be_empty
140
+ expect(client.data.size).to eq(1)
141
+ expect(client.data[0].document.xpath('/message/body[.="exit"]')).not_to be_empty
142
+ expect(client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml')).not_to be_empty
143
143
  end
144
144
 
145
145
  it 'ignores the component namespace on stanzas' do
@@ -147,8 +147,8 @@ describe Blather::Stream::Parser do
147
147
  "<body>exit</body>",
148
148
  "<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>exit</body></html>",
149
149
  "</message>"
150
- client.data.size.should == 1
151
- client.data[0].document.xpath('/message/body[.="exit"]').should_not be_empty
152
- client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml').should_not be_empty
150
+ expect(client.data.size).to eq(1)
151
+ expect(client.data[0].document.xpath('/message/body[.="exit"]')).not_to be_empty
152
+ expect(client.data[0].document.xpath('/message/im:html/xhtml:body[.="exit"]', 'im' => 'http://jabber.org/protocol/xhtml-im', 'xhtml' => 'http://www.w3.org/1999/xhtml')).not_to be_empty
153
153
  end
154
154
  end
@@ -10,15 +10,15 @@ describe Blather::CertStore do
10
10
  end
11
11
 
12
12
  it 'can verify valid cert' do
13
- subject.trusted?(cert).should be true
13
+ expect(subject.trusted?(cert)).to be true
14
14
  end
15
15
 
16
16
  it 'can verify invalid cert' do
17
- subject.trusted?(cert[0..(cert.length/2)]).should be_nil
17
+ expect(subject.trusted?('foo bar baz')).to be_nil
18
18
  end
19
19
 
20
20
  it 'cannot verify when the cert authority is not trusted' do
21
21
  @store = Blather::CertStore.new("../")
22
- @store.trusted?(cert).should be false
22
+ expect(@store.trusted?(cert)).to be false
23
23
  end
24
24
  end
@@ -6,33 +6,33 @@ describe Blather::XMPPNode do
6
6
  it 'generates a node based on the registered_name' do
7
7
  foo = Class.new(Blather::XMPPNode)
8
8
  foo.registered_name = 'foo'
9
- foo.new.element_name.should == 'foo'
9
+ expect(foo.new.element_name).to eq('foo')
10
10
  end
11
11
 
12
12
  it 'sets the namespace on creation' do
13
13
  foo = Class.new(Blather::XMPPNode)
14
14
  foo.registered_ns = 'foo'
15
- foo.new('foo').namespace.href.should == 'foo'
15
+ expect(foo.new('foo').namespace.href).to eq('foo')
16
16
  end
17
17
 
18
18
  it 'registers sub classes' do
19
19
  class RegistersSubClass < Blather::XMPPNode; register 'foo', 'foo:bar'; end
20
- RegistersSubClass.registered_name.should == 'foo'
21
- RegistersSubClass.registered_ns.should == 'foo:bar'
22
- Blather::XMPPNode.class_from_registration('foo', 'foo:bar').should == RegistersSubClass
20
+ expect(RegistersSubClass.registered_name).to eq('foo')
21
+ expect(RegistersSubClass.registered_ns).to eq('foo:bar')
22
+ expect(Blather::XMPPNode.class_from_registration('foo', 'foo:bar')).to eq(RegistersSubClass)
23
23
  end
24
24
 
25
25
  it 'imports another node' do
26
26
  class ImportSubClass < Blather::XMPPNode; register 'foo', 'foo:bar'; end
27
27
  n = Blather::XMPPNode.new('foo')
28
28
  n.namespace = 'foo:bar'
29
- Blather::XMPPNode.import(n).should be_kind_of ImportSubClass
29
+ expect(Blather::XMPPNode.import(n)).to be_kind_of ImportSubClass
30
30
  end
31
31
 
32
32
  it 'can convert itself into a stanza' do
33
33
  class StanzaConvert < Blather::XMPPNode; register 'foo'; end
34
34
  n = Blather::XMPPNode.new('foo')
35
- n.to_stanza.should be_kind_of StanzaConvert
35
+ expect(n.to_stanza).to be_kind_of StanzaConvert
36
36
  end
37
37
 
38
38
  it 'can parse a string and import it' do
@@ -40,8 +40,8 @@ describe Blather::XMPPNode do
40
40
  string = '<foo/>'
41
41
  n = Nokogiri::XML(string).root
42
42
  i = Blather::XMPPNode.import n
43
- i.should be_kind_of StanzaParse
43
+ expect(i).to be_kind_of StanzaParse
44
44
  p = Blather::XMPPNode.parse string
45
- p.should be_kind_of StanzaParse
45
+ expect(p).to be_kind_of StanzaParse
46
46
  end
47
47
  end
@@ -4,7 +4,7 @@ describe Blather do
4
4
 
5
5
  describe "while accessing to Logger object" do
6
6
  it "should return a Logger instance" do
7
- Blather.logger.should be_instance_of Logger
7
+ expect(Blather.logger).to be_instance_of Logger
8
8
  end
9
9
  end
10
10
 
@@ -1,5 +1,6 @@
1
1
  require 'blather'
2
2
  require 'countdownlatch'
3
+ require 'sucker_punch/testing/inline'
3
4
 
4
5
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
5
6
 
@@ -9,7 +10,6 @@ RSpec.configure do |config|
9
10
  config.run_all_when_everything_filtered = true
10
11
 
11
12
  config.before(:each) do
12
- GirlFriday::WorkQueue.immediate!
13
13
  Blather::Stream::Parser.debug = true
14
14
  Blather.logger = Logger.new($stdout).tap { |logger| logger.level = Logger::DEBUG }
15
15
  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: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Smick
@@ -9,48 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-07 00:00:00.000000000 Z
12
+ date: 2018-06-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.2'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
- version: 1.0.0
23
+ version: 1.2.6
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '1.2'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
- version: 1.0.0
33
+ version: 1.2.6
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: nokogiri
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
38
  - - "~>"
33
39
  - !ruby/object:Gem::Version
34
- version: '1.5'
40
+ version: '1.8'
35
41
  - - ">="
36
42
  - !ruby/object:Gem::Version
37
- version: 1.5.6
38
- - - "<="
39
- - !ruby/object:Gem::Version
40
- version: 1.6.1
43
+ version: 1.8.3
41
44
  type: :runtime
42
45
  prerelease: false
43
46
  version_requirements: !ruby/object:Gem::Requirement
44
47
  requirements:
45
48
  - - "~>"
46
49
  - !ruby/object:Gem::Version
47
- version: '1.5'
50
+ version: '1.8'
48
51
  - - ">="
49
52
  - !ruby/object:Gem::Version
50
- version: 1.5.6
51
- - - "<="
52
- - !ruby/object:Gem::Version
53
- version: 1.6.1
53
+ version: 1.8.3
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: niceogiri
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -80,19 +80,19 @@ dependencies:
80
80
  - !ruby/object:Gem::Version
81
81
  version: 2.3.11
82
82
  - !ruby/object:Gem::Dependency
83
- name: girl_friday
83
+ name: sucker_punch
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">="
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0'
88
+ version: '2.0'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">="
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
95
+ version: '2.0'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: bundler
98
98
  requirement: !ruby/object:Gem::Requirement
@@ -127,28 +127,28 @@ dependencies:
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '2.7'
130
+ version: '3.0'
131
131
  type: :development
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '2.7'
137
+ version: '3.0'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: mocha
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '0.9'
144
+ version: '1.0'
145
145
  type: :development
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '0.9'
151
+ version: '1.0'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: guard-rspec
154
154
  requirement: !ruby/object:Gem::Requirement
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: '0.6'
172
+ version: 0.9.11
173
173
  type: :development
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '0.6'
179
+ version: 0.9.11
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: bluecloth
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -398,7 +398,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
398
  version: '0'
399
399
  requirements: []
400
400
  rubyforge_project:
401
- rubygems_version: 2.5.1
401
+ rubygems_version: 2.7.3
402
402
  signing_key:
403
403
  specification_version: 4
404
404
  summary: Simpler XMPP built for speed
@@ -459,4 +459,3 @@ test_files:
459
459
  - spec/fixtures/pubsub.rb
460
460
  - spec/spec_helper.rb
461
461
  - spec/support/mock_server.rb
462
- has_rdoc: