blather 0.6.2 → 0.7.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/.rspec +3 -0
- data/.travis.yml +1 -8
- data/CHANGELOG.md +230 -0
- data/Guardfile +4 -4
- data/README.md +2 -8
- data/Rakefile +14 -27
- data/blather.gemspec +8 -18
- data/lib/blather.rb +1 -0
- data/lib/blather/client/client.rb +8 -0
- data/lib/blather/roster.rb +7 -0
- data/lib/blather/stanza/iq/roster.rb +1 -1
- data/lib/blather/stanza/message/muc_user.rb +2 -0
- data/lib/blather/stanza/muc/muc_user_base.rb +4 -3
- data/lib/blather/stanza/presence.rb +12 -14
- data/lib/blather/stanza/presence/c.rb +58 -62
- data/lib/blather/stanza/presence/muc.rb +14 -10
- data/lib/blather/stanza/presence/muc_user.rb +47 -36
- data/lib/blather/stanza/presence/status.rb +106 -101
- data/lib/blather/stanza/presence/subscription.rb +59 -60
- data/lib/blather/stream.rb +1 -3
- data/lib/blather/stream/features/resource.rb +0 -1
- data/lib/blather/version.rb +1 -2
- data/lib/blather/xmpp_node.rb +24 -3
- data/spec/blather/client/client_spec.rb +64 -64
- data/spec/blather/client/dsl/pubsub_spec.rb +127 -127
- data/spec/blather/client/dsl_spec.rb +11 -11
- data/spec/blather/errors/sasl_error_spec.rb +3 -3
- data/spec/blather/errors/stanza_error_spec.rb +26 -26
- data/spec/blather/errors/stream_error_spec.rb +22 -22
- data/spec/blather/errors_spec.rb +7 -7
- data/spec/blather/file_transfer_spec.rb +16 -18
- data/spec/blather/jid_spec.rb +29 -29
- data/spec/blather/roster_item_spec.rb +18 -18
- data/spec/blather/roster_spec.rb +18 -18
- data/spec/blather/stanza/discos/disco_info_spec.rb +56 -57
- data/spec/blather/stanza/discos/disco_items_spec.rb +33 -33
- data/spec/blather/stanza/iq/command_spec.rb +57 -57
- data/spec/blather/stanza/iq/ibb_spec.rb +27 -39
- data/spec/blather/stanza/iq/ping_spec.rb +13 -9
- data/spec/blather/stanza/iq/query_spec.rb +16 -16
- data/spec/blather/stanza/iq/roster_spec.rb +29 -30
- data/spec/blather/stanza/iq/s5b_spec.rb +10 -13
- data/spec/blather/stanza/iq/si_spec.rb +20 -23
- data/spec/blather/stanza/iq/vcard_spec.rb +22 -25
- data/spec/blather/stanza/iq_spec.rb +12 -12
- data/spec/blather/stanza/message/muc_user_spec.rb +36 -36
- data/spec/blather/stanza/message_spec.rb +56 -56
- data/spec/blather/stanza/presence/c_spec.rb +17 -7
- data/spec/blather/stanza/presence/muc_spec.rb +8 -8
- data/spec/blather/stanza/presence/muc_user_spec.rb +23 -23
- data/spec/blather/stanza/presence/status_spec.rb +42 -30
- data/spec/blather/stanza/presence/subscription_spec.rb +22 -23
- data/spec/blather/stanza/presence_spec.rb +72 -34
- data/spec/blather/stanza/pubsub/affiliations_spec.rb +12 -12
- data/spec/blather/stanza/pubsub/create_spec.rb +10 -10
- data/spec/blather/stanza/pubsub/event_spec.rb +31 -31
- data/spec/blather/stanza/pubsub/items_spec.rb +21 -21
- data/spec/blather/stanza/pubsub/publish_spec.rb +21 -21
- data/spec/blather/stanza/pubsub/retract_spec.rb +20 -20
- data/spec/blather/stanza/pubsub/subscribe_spec.rb +17 -17
- data/spec/blather/stanza/pubsub/subscription_spec.rb +28 -28
- data/spec/blather/stanza/pubsub/subscriptions_spec.rb +11 -11
- data/spec/blather/stanza/pubsub/unsubscribe_spec.rb +22 -22
- data/spec/blather/stanza/pubsub_owner/delete_spec.rb +9 -9
- data/spec/blather/stanza/pubsub_owner/purge_spec.rb +9 -9
- data/spec/blather/stanza/pubsub_owner_spec.rb +6 -6
- data/spec/blather/stanza/pubsub_spec.rb +16 -16
- data/spec/blather/stanza/x_spec.rb +53 -53
- data/spec/blather/stanza_spec.rb +39 -39
- data/spec/blather/stream/client_spec.rb +133 -133
- data/spec/blather/stream/component_spec.rb +7 -7
- data/spec/blather/stream/parser_spec.rb +24 -24
- data/spec/blather/stream/ssl_spec.rb +7 -7
- data/spec/blather/xmpp_node_spec.rb +17 -7
- data/spec/blather_spec.rb +4 -4
- data/spec/spec_helper.rb +6 -54
- metadata +53 -68
- data/CHANGELOG +0 -220
@@ -46,12 +46,12 @@ describe Blather::Stream::Component do
|
|
46
46
|
when nil
|
47
47
|
state = :started
|
48
48
|
server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' id='12345'>"
|
49
|
-
val.
|
49
|
+
val.should match(/stream:stream/)
|
50
50
|
|
51
51
|
when :started
|
52
52
|
server.send_data '<handshake/>'
|
53
53
|
EM.stop
|
54
|
-
val.
|
54
|
+
val.should == "<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>"
|
55
55
|
|
56
56
|
end
|
57
57
|
end
|
@@ -65,11 +65,11 @@ describe Blather::Stream::Component do
|
|
65
65
|
|
66
66
|
Blather::Stream::Component.start @client, @jid || Blather::JID.new('n@d/r'), 'pass', '127.0.0.1', 50000 - rand(1000)
|
67
67
|
}
|
68
|
-
end.
|
68
|
+
end.should raise_error Blather::Stream::ConnectionFailed
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'starts the stream once the connection is complete' do
|
72
|
-
mocked_server(1) { |val, _| EM.stop; val.
|
72
|
+
mocked_server(1) { |val, _| EM.stop; val.should match(/stream:stream/) }
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'sends stanzas to the client when the stream is ready' do
|
@@ -85,12 +85,12 @@ describe Blather::Stream::Component do
|
|
85
85
|
when nil
|
86
86
|
state = :started
|
87
87
|
server.send_data "<?xml version='1.0'?><stream:stream xmlns='jabber:component:accept' xmlns:stream='http://etherx.jabber.org/streams' id='12345'>"
|
88
|
-
val.
|
88
|
+
val.should match(/stream:stream/)
|
89
89
|
|
90
90
|
when :started
|
91
91
|
server.send_data '<handshake/>'
|
92
92
|
server.send_data "<message to='comp.id' from='d@e/f' type='chat' xml:lang='en'><body>Message!</body></message>"
|
93
|
-
val.
|
93
|
+
val.should == "<handshake>#{Digest::SHA1.hexdigest('12345'+"secret")}</handshake>"
|
94
94
|
|
95
95
|
end
|
96
96
|
end
|
@@ -102,7 +102,7 @@ describe Blather::Stream::Component do
|
|
102
102
|
client.stubs(:jid=)
|
103
103
|
msg = Blather::Stanza::Message.new 'to@jid.com', 'body'
|
104
104
|
comp = Blather::Stream::Component.new nil, client, 'jid.com', 'pass'
|
105
|
-
comp.expects(:send_data).with { |s| s.
|
105
|
+
comp.expects(:send_data).with { |s| s.should match(/^<message[^>]*from="jid\.com"/) }
|
106
106
|
comp.send msg
|
107
107
|
end
|
108
108
|
end
|
@@ -17,16 +17,16 @@ describe Blather::Stream::Parser do
|
|
17
17
|
|
18
18
|
def check_parse(data)
|
19
19
|
@parser.receive_data data
|
20
|
-
@client.data.size.
|
21
|
-
@client.data[0].to_s.gsub(/\n\s*/,'').
|
20
|
+
@client.data.size.should == 1
|
21
|
+
@client.data[0].to_s.gsub(/\n\s*/,'').should == data
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'handles fragmented parsing' do
|
25
25
|
@parser.receive_data '<foo>'
|
26
26
|
@parser.receive_data '<bar/>'
|
27
27
|
@parser.receive_data '</foo>'
|
28
|
-
@client.data.size.
|
29
|
-
@client.data[0].to_s.gsub(/\n\s*/,'').
|
28
|
+
@client.data.size.should == 1
|
29
|
+
@client.data[0].to_s.gsub(/\n\s*/,'').should == '<foo><bar/></foo>'
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'handles a basic example' do
|
@@ -88,15 +88,15 @@ describe Blather::Stream::Parser do
|
|
88
88
|
"</message>",
|
89
89
|
]
|
90
90
|
data.each { |d| @parser.receive_data d }
|
91
|
-
@client.data.size.
|
92
|
-
@client.data[0].to_s.split("\n").map{|n|n.strip}.
|
93
|
-
@client.data[0].xpath('//*[namespace-uri()="urn:ietf:params:xml:ns:xmpp-stanzas"]').size.
|
91
|
+
@client.data.size.should == 1
|
92
|
+
@client.data[0].to_s.split("\n").map{|n|n.strip}.should == data
|
93
|
+
@client.data[0].xpath('//*[namespace-uri()="urn:ietf:params:xml:ns:xmpp-stanzas"]').size.should == 2
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'handles not absolute namespaces' do
|
97
|
-
|
97
|
+
lambda do
|
98
98
|
@parser.receive_data '<iq type="result" id="blather0007" to="n@d/r"><vCard xmlns="vcard-temp"/></iq>'
|
99
|
-
end
|
99
|
+
end.should_not raise_error
|
100
100
|
end
|
101
101
|
|
102
102
|
it 'responds with stream:stream as a separate response' do
|
@@ -105,19 +105,19 @@ describe Blather::Stream::Parser do
|
|
105
105
|
'<foo/>'
|
106
106
|
]
|
107
107
|
data.each { |d| @parser.receive_data d }
|
108
|
-
@client.data.size.
|
109
|
-
@client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size.
|
110
|
-
@client.data[1].to_s.
|
108
|
+
@client.data.size.should == 2
|
109
|
+
@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
|
110
|
+
@client.data[1].to_s.should == '<foo/>'
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'response with stream:end when receiving </stream:stream>' do
|
114
114
|
@parser.receive_data '<stream:stream xmlns:stream="http://etherx.jabber.org/streams"/>'
|
115
|
-
@client.data.size.
|
116
|
-
@client.data[1].to_s.
|
115
|
+
@client.data.size.should == 2
|
116
|
+
@client.data[1].to_s.should == '<stream:end xmlns:stream="http://etherx.jabber.org/streams"/>'
|
117
117
|
end
|
118
118
|
|
119
119
|
it 'raises ParseError when an error is sent' do
|
120
|
-
lambda { @parser.receive_data "<stream:stream>" }.
|
120
|
+
lambda { @parser.receive_data "<stream:stream>" }.should raise_error(Blather::ParseError)
|
121
121
|
end
|
122
122
|
|
123
123
|
it 'handles stream stanzas without an issue' do
|
@@ -126,9 +126,9 @@ describe Blather::Stream::Parser do
|
|
126
126
|
'<stream:features/>'
|
127
127
|
]
|
128
128
|
data.each { |d| @parser.receive_data d }
|
129
|
-
@client.data.size.
|
130
|
-
@client.data[0].document.xpath('/stream:stream[@to="example.com" and @version="1.0"]', 'xmlns' => 'jabber:client', 'stream' => 'http://etherx.jabber.org/streams').size.
|
131
|
-
@client.data[1].to_s.
|
129
|
+
@client.data.size.should == 2
|
130
|
+
@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
|
131
|
+
@client.data[1].to_s.should == '<stream:features xmlns:stream="http://etherx.jabber.org/streams"/>'
|
132
132
|
end
|
133
133
|
|
134
134
|
it 'ignores the client namespace on stanzas' do
|
@@ -137,9 +137,9 @@ describe Blather::Stream::Parser do
|
|
137
137
|
"<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>exit</body></html>",
|
138
138
|
"</message>"
|
139
139
|
].each { |d| @parser.receive_data d }
|
140
|
-
@client.data.size.
|
141
|
-
@client.data[0].document.xpath('/message/body[.="exit"]').
|
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').
|
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
|
143
143
|
end
|
144
144
|
|
145
145
|
it 'ignores the component namespace on stanzas' do
|
@@ -148,8 +148,8 @@ describe Blather::Stream::Parser do
|
|
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
150
|
].each { |d| @parser.receive_data d }
|
151
|
-
@client.data.size.
|
152
|
-
@client.data[0].document.xpath('/message/body[.="exit"]').
|
153
|
-
@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').
|
151
|
+
@client.data.size.should == 1
|
152
|
+
@client.data[0].document.xpath('/message/body[.="exit"]').should_not be_empty
|
153
|
+
@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
|
154
154
|
end
|
155
155
|
end
|
@@ -6,27 +6,27 @@ describe Blather::CertStore do
|
|
6
6
|
@cert = File.open("./test.crt", 'w') {|f| f.write(@pem) }
|
7
7
|
@store = Blather::CertStore.new("./")
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
after do
|
11
11
|
File.delete("./test.crt")
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it 'can verify valid cert' do
|
15
15
|
@store.trusted?(@pem).tap do |trusted|
|
16
|
-
trusted.
|
16
|
+
trusted.should == true
|
17
17
|
end
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
it 'can verify invalid cert' do
|
21
21
|
@store.trusted?(@pem.gsub("L", "a")).tap do |trusted|
|
22
|
-
trusted.
|
22
|
+
trusted.should == nil
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it 'can verify without a cert store' do
|
27
27
|
@store = Blather::CertStore.new("../")
|
28
28
|
@store.trusted?(@pem).tap do |trusted|
|
29
|
-
trusted.
|
29
|
+
trusted.should == true
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -6,32 +6,42 @@ 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.
|
9
|
+
foo.new.element_name.should == '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.
|
15
|
+
foo.new('foo').namespace.href.should == '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.
|
21
|
-
RegistersSubClass.registered_ns.
|
22
|
-
Blather::XMPPNode.class_from_registration('foo', 'foo:bar').
|
20
|
+
RegistersSubClass.registered_name.should == 'foo'
|
21
|
+
RegistersSubClass.registered_ns.should == 'foo:bar'
|
22
|
+
Blather::XMPPNode.class_from_registration('foo', 'foo:bar').should == 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).
|
29
|
+
Blather::XMPPNode.import(n).should 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.
|
35
|
+
n.to_stanza.should be_kind_of StanzaConvert
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'can parse a string and import it' do
|
39
|
+
class StanzaParse < Blather::XMPPNode; register 'foo'; end
|
40
|
+
string = '<foo/>'
|
41
|
+
n = Nokogiri::XML(string).root
|
42
|
+
i = Blather::XMPPNode.import n
|
43
|
+
i.should be_kind_of StanzaParse
|
44
|
+
p = Blather::XMPPNode.parse string
|
45
|
+
p.should be_kind_of StanzaParse
|
36
46
|
end
|
37
47
|
end
|
data/spec/blather_spec.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
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.
|
7
|
+
Blather.logger.should be_instance_of Logger
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should config log level to info by default" do
|
11
|
-
Blather.logger.level.
|
11
|
+
Blather.logger.level.should == 1
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -21,7 +21,7 @@ describe Blather do
|
|
21
21
|
Blather.logger.expects(:debug).with("foo bar").once
|
22
22
|
Blather.log "foo bar"
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
%w<debug info error fatal>.each do |val|
|
26
26
|
it "should forward to #{val} if configured that default level" do
|
27
27
|
Blather.logger.expects(val.to_sym).with("foo bar").once
|
data/spec/spec_helper.rb
CHANGED
@@ -1,62 +1,14 @@
|
|
1
|
-
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
2
|
-
|
3
1
|
require 'blather'
|
4
|
-
require 'minitest/spec'
|
5
2
|
require 'mocha'
|
6
|
-
require 'mocha/expectation_error'
|
7
|
-
|
8
|
-
MiniTest::Unit.autorun
|
9
|
-
|
10
|
-
module MiniTest
|
11
|
-
require 'pathname' if MINI_DIR =~ %r{^./}
|
12
3
|
|
13
|
-
|
14
|
-
def assert_change(stmt, args = {}, msg = nil)
|
15
|
-
msg ||= proc {
|
16
|
-
m = "Expected #{stmt} to change"
|
17
|
-
m << " by #{mu_pp args[:by]}" if args[:by]
|
18
|
-
m << (args[:from] ? " from #{mu_pp args[:from]}" : '') + " to #{mu_pp args[:to]}" if args[:to]
|
19
|
-
m
|
20
|
-
}.call
|
4
|
+
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
|
21
5
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
assert_equal(args[:by], (new_val - init_val), msg) if args[:by]
|
27
|
-
assert_equal([args[:from], args[:to]], [(init_val if args[:from]), new_val], msg) if args[:to]
|
28
|
-
refute_equal(init_val, new_val, msg) if args.empty?
|
29
|
-
end
|
30
|
-
|
31
|
-
def assert_nothing_raised(*args)
|
32
|
-
self._assertions += 1
|
33
|
-
msg = Module === args.last ? nil : args.pop
|
34
|
-
begin
|
35
|
-
line = __LINE__; yield
|
36
|
-
rescue Exception => e
|
37
|
-
bt = e.backtrace
|
38
|
-
as = e.instance_of?(MiniTest::Assertion)
|
39
|
-
if as
|
40
|
-
ans = /\A#{Regexp.quote(__FILE__)}:#{line}:in /o
|
41
|
-
bt.reject! {|ln| ans =~ ln}
|
42
|
-
end
|
43
|
-
if ((args.empty? && !as) ||
|
44
|
-
args.any? {|a| a.instance_of?(Module) ? e.is_a?(a) : e.class == a })
|
45
|
-
msg = message(msg) { "Exception raised:\n<#{mu_pp(e)}>" }
|
46
|
-
raise MiniTest::Assertion, msg.call, bt
|
47
|
-
else
|
48
|
-
raise
|
49
|
-
end
|
50
|
-
end
|
51
|
-
nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.mock_with :mocha
|
8
|
+
config.filter_run :focus => true
|
9
|
+
config.run_all_when_everything_filtered = true
|
55
10
|
|
56
|
-
|
57
|
-
def must_change *args, &block
|
58
|
-
return MiniTest::Spec.current.assert_change(*args, &self)
|
59
|
-
end
|
11
|
+
config.before(:each) { GirlFriday::WorkQueue.immediate! }
|
60
12
|
end
|
61
13
|
|
62
14
|
def parse_stanza(xml)
|
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.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
16
|
-
requirement: &
|
16
|
+
requirement: &2160912760 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.12.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2160912760
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &2160912200 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: 1.4.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2160912200
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: niceogiri
|
38
|
-
requirement: &
|
38
|
+
requirement: &2160911680 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: 1.0.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2160911680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &2160911180 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,65 +54,65 @@ dependencies:
|
|
54
54
|
version: 3.0.7
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2160911180
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
59
|
+
name: girl_friday
|
60
|
+
requirement: &2160910780 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
|
-
- -
|
63
|
+
- - ! '>='
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
66
|
-
type: :
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2160910780
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement: &
|
70
|
+
name: bundler
|
71
|
+
requirement: &2160910100 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0
|
76
|
+
version: '1.0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2160910100
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement: &
|
81
|
+
name: rake
|
82
|
+
requirement: &2160830340 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
|
-
- -
|
85
|
+
- - ! '>='
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
87
|
+
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2160830340
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
92
|
+
name: rspec
|
93
|
+
requirement: &2160829420 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
98
|
+
version: '2.7'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2160829420
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
|
-
name:
|
104
|
-
requirement: &
|
103
|
+
name: mocha
|
104
|
+
requirement: &2160828500 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.
|
109
|
+
version: 0.9.12
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *2160828500
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
115
|
-
requirement: &
|
114
|
+
name: guard-rspec
|
115
|
+
requirement: &2160828100 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,43 +120,21 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *2160828100
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
|
-
name:
|
126
|
-
requirement: &
|
125
|
+
name: yard
|
126
|
+
requirement: &2160827480 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ~>
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 0.6.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *2160827480
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: bluecloth
|
137
|
-
requirement: &
|
138
|
-
none: false
|
139
|
-
requirements:
|
140
|
-
- - ! '>='
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: '0'
|
143
|
-
type: :development
|
144
|
-
prerelease: false
|
145
|
-
version_requirements: *2156235340
|
146
|
-
- !ruby/object:Gem::Dependency
|
147
|
-
name: growl_notify
|
148
|
-
requirement: &2156233800 !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
|
-
requirements:
|
151
|
-
- - ! '>='
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
|
-
type: :development
|
155
|
-
prerelease: false
|
156
|
-
version_requirements: *2156233800
|
157
|
-
- !ruby/object:Gem::Dependency
|
158
|
-
name: rb-fsevent
|
159
|
-
requirement: &2156232440 !ruby/object:Gem::Requirement
|
137
|
+
requirement: &2160826940 !ruby/object:Gem::Requirement
|
160
138
|
none: false
|
161
139
|
requirements:
|
162
140
|
- - ! '>='
|
@@ -164,7 +142,7 @@ dependencies:
|
|
164
142
|
version: '0'
|
165
143
|
type: :development
|
166
144
|
prerelease: false
|
167
|
-
version_requirements: *
|
145
|
+
version_requirements: *2160826940
|
168
146
|
description: An XMPP DSL for Ruby written on top of EventMachine and Nokogiri
|
169
147
|
email: sprsquish@gmail.com
|
170
148
|
executables: []
|
@@ -176,8 +154,9 @@ files:
|
|
176
154
|
- .autotest
|
177
155
|
- .gemtest
|
178
156
|
- .gitignore
|
157
|
+
- .rspec
|
179
158
|
- .travis.yml
|
180
|
-
- CHANGELOG
|
159
|
+
- CHANGELOG.md
|
181
160
|
- Gemfile
|
182
161
|
- Guardfile
|
183
162
|
- LICENSE
|
@@ -333,12 +312,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
333
312
|
- - ! '>='
|
334
313
|
- !ruby/object:Gem::Version
|
335
314
|
version: '0'
|
315
|
+
segments:
|
316
|
+
- 0
|
317
|
+
hash: -4263563827557354673
|
336
318
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
337
319
|
none: false
|
338
320
|
requirements:
|
339
321
|
- - ! '>='
|
340
322
|
- !ruby/object:Gem::Version
|
341
323
|
version: '0'
|
324
|
+
segments:
|
325
|
+
- 0
|
326
|
+
hash: -4263563827557354673
|
342
327
|
requirements: []
|
343
328
|
rubyforge_project:
|
344
329
|
rubygems_version: 1.8.10
|