em-xmpp 0.0.2 → 0.0.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/lib/em-xmpp/version.rb +1 -1
- metadata +7 -10
- data/samples/echo.rb +0 -72
- data/samples/muc.rb +0 -95
- data/samples/roster.rb +0 -41
data/lib/em-xmpp/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-xmpp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-05-05 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
16
|
-
requirement: &
|
16
|
+
requirement: &2154840920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2154840920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &2154840500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2154840500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: ruby-sasl
|
38
|
-
requirement: &
|
38
|
+
requirement: &2154840080 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2154840080
|
47
47
|
description: XMPP client for event machine
|
48
48
|
email:
|
49
49
|
- crapooze@gmail.com
|
@@ -70,9 +70,6 @@ files:
|
|
70
70
|
- lib/em-xmpp/stanza_handler.rb
|
71
71
|
- lib/em-xmpp/stanza_matcher.rb
|
72
72
|
- lib/em-xmpp/version.rb
|
73
|
-
- samples/echo.rb
|
74
|
-
- samples/muc.rb
|
75
|
-
- samples/roster.rb
|
76
73
|
homepage: https://github.com/crapooze/em-xmpp
|
77
74
|
licenses: []
|
78
75
|
post_install_message:
|
data/samples/echo.rb
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift './lib'
|
3
|
-
require 'em-xmpp'
|
4
|
-
require 'em-xmpp/namespaces'
|
5
|
-
require 'em-xmpp/nodes'
|
6
|
-
|
7
|
-
if ARGV.empty?
|
8
|
-
puts "usage: #{__FILE__} <jid> [<pass>]"
|
9
|
-
exit 0
|
10
|
-
end
|
11
|
-
|
12
|
-
jid = ARGV.first
|
13
|
-
pass = ARGV[1]
|
14
|
-
|
15
|
-
include EM::Xmpp::Namespaces
|
16
|
-
include EM::Xmpp::Nodes
|
17
|
-
|
18
|
-
module MyClient
|
19
|
-
def ready
|
20
|
-
puts "***** #{@jid} ready for #{self}"
|
21
|
-
|
22
|
-
# Sending a stanza and adding a temporary matcher to it.
|
23
|
-
# Returns an handler object that is already ready to process further stanzas.
|
24
|
-
# Note that so far there is no way to time-out such an handler automatically.
|
25
|
-
handler = send_stanza(iq_stanza('to'=> 'dicioccio@mbpldc.local') do |x|
|
26
|
-
x.body "this will trigger an XMPP error"
|
27
|
-
end) do |ctx|
|
28
|
-
if ctx.error?
|
29
|
-
p ctx.error_code
|
30
|
-
p ctx.error_type
|
31
|
-
p ctx.error_condition
|
32
|
-
end
|
33
|
-
ctx
|
34
|
-
end
|
35
|
-
|
36
|
-
# Exception handling (i.e., when Ruby raises something)
|
37
|
-
on_exception(:anything) do |ctx|
|
38
|
-
raise ctx['error']
|
39
|
-
end
|
40
|
-
|
41
|
-
# Manually add a matcher + handler for it
|
42
|
-
m = EM::Xmpp::StanzaMatcher.new do |ctx|
|
43
|
-
p "proc-ing"
|
44
|
-
true
|
45
|
-
end
|
46
|
-
h = EM::Xmpp::StanzaHandler.new(m) do |ctx|
|
47
|
-
p "proc-ed"
|
48
|
-
ctx
|
49
|
-
end
|
50
|
-
@handler.add_handler h
|
51
|
-
|
52
|
-
# Presence handler
|
53
|
-
on_presence do |s|
|
54
|
-
p "*presence> #{s.from} #{s.show} (#{s.status})"
|
55
|
-
send_stanza(s.reply('type'=>'subscribed')) if s.subscription_request?
|
56
|
-
s
|
57
|
-
end
|
58
|
-
|
59
|
-
# Message handler
|
60
|
-
on_message do |s|
|
61
|
-
p "*message> #{s.from}\n#{s.body}\n"
|
62
|
-
send_stanza(s.reply do |x|
|
63
|
-
x.body "you sent:#{s.body}"
|
64
|
-
end)
|
65
|
-
s
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
EM.run do
|
71
|
-
EM::Xmpp::Connection.start(jid, pass, MyClient)
|
72
|
-
end
|
data/samples/muc.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift './lib'
|
3
|
-
require 'em-xmpp'
|
4
|
-
require 'em-xmpp/namespaces'
|
5
|
-
require 'em-xmpp/nodes'
|
6
|
-
|
7
|
-
if ARGV.size < 3
|
8
|
-
puts "usage: #{__FILE__} <jid> <pass> <muc> [<invitees>...]"
|
9
|
-
exit 0
|
10
|
-
end
|
11
|
-
|
12
|
-
jid = ARGV.first
|
13
|
-
pass = ARGV[1]
|
14
|
-
muc = ARGV[2]
|
15
|
-
invitees = ARGV[3 .. -1]
|
16
|
-
|
17
|
-
include EM::Xmpp::Namespaces
|
18
|
-
include EM::Xmpp::Nodes
|
19
|
-
|
20
|
-
module MyClient
|
21
|
-
def join_muc(muc, login='myclient')
|
22
|
-
p "joining muc: #{muc}"
|
23
|
-
muc = [muc, login].join('/')
|
24
|
-
send_stanza presence_stanza('to'=> muc, 'id' => 'join.muc')
|
25
|
-
end
|
26
|
-
|
27
|
-
def leave_muc(muc, login='myclient')
|
28
|
-
p "leaving muc: #{muc}"
|
29
|
-
muc = [muc, login].join('/')
|
30
|
-
send_stanza(presence_stanza('to'=> muc, 'id' => 'leave.muc', 'type' => 'unavailable')) do |ctx|
|
31
|
-
p "left muc"
|
32
|
-
ctx
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def invite_to_muc(invitee, muc, text)
|
37
|
-
p "inviting #{invitee} to #{muc}"
|
38
|
-
send_stanza(message_stanza('to' => muc, 'type' => 'normal') do |xml|
|
39
|
-
xml.x(:xmlns => 'http://jabber.org/protocol/muc#user') do |x|
|
40
|
-
x.invite(:to => invitee) do |invite|
|
41
|
-
invite.reason do |reason|
|
42
|
-
reason.text text
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end)
|
47
|
-
end
|
48
|
-
|
49
|
-
attr_accessor :muc
|
50
|
-
attr_accessor :invitees
|
51
|
-
|
52
|
-
def ready
|
53
|
-
puts "***** #{@jid} ready for #{self}"
|
54
|
-
|
55
|
-
join_muc(muc)
|
56
|
-
|
57
|
-
on('//xmlns:x', 'xmlns' => EM::Xmpp::Namespaces::MucUser) do |ctx|
|
58
|
-
muc = ctx.jid.bare if ctx.jid
|
59
|
-
p ctx.jid
|
60
|
-
p ctx.affiliation
|
61
|
-
p ctx.role
|
62
|
-
if ctx.status
|
63
|
-
invitees.each do |invitee|
|
64
|
-
p invitee
|
65
|
-
invite_to_muc muc, invitee, "hello, join my MUC"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
ctx
|
69
|
-
end
|
70
|
-
|
71
|
-
on_message do |ctx|
|
72
|
-
p "message"
|
73
|
-
p ctx.nickname if ctx.respond_to?(:nickname)
|
74
|
-
leave_muc(muc) if ctx.body =~ /leave/ and not ctx.delay?
|
75
|
-
ctx
|
76
|
-
end
|
77
|
-
|
78
|
-
on_exception(:anything) do |ctx|
|
79
|
-
raise ctx['error']
|
80
|
-
end
|
81
|
-
|
82
|
-
on_presence do |s|
|
83
|
-
p "*presence> #{s.from} #{s.show} (#{s.status})"
|
84
|
-
p " has left" if s.entity_left?
|
85
|
-
s
|
86
|
-
end
|
87
|
-
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
EM.run do
|
92
|
-
conn = EM::Xmpp::Connection.start(jid, pass, MyClient)
|
93
|
-
conn.muc = muc
|
94
|
-
conn.invitees = invitees
|
95
|
-
end
|
data/samples/roster.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift './lib'
|
4
|
-
require 'em-xmpp'
|
5
|
-
require 'em-xmpp/namespaces'
|
6
|
-
require 'em-xmpp/nodes'
|
7
|
-
|
8
|
-
if ARGV.empty?
|
9
|
-
puts "usage: #{__FILE__} <jid> [<pass>]"
|
10
|
-
exit 0
|
11
|
-
end
|
12
|
-
|
13
|
-
jid = ARGV.first
|
14
|
-
pass = ARGV[1]
|
15
|
-
|
16
|
-
include EM::Xmpp::Namespaces
|
17
|
-
include EM::Xmpp::Nodes
|
18
|
-
|
19
|
-
module MyClient
|
20
|
-
def ask_roster
|
21
|
-
send_stanza(iq_stanza do |x|
|
22
|
-
x.query('xmlns' => Roster)
|
23
|
-
end) do |ctx|
|
24
|
-
p ctx.items
|
25
|
-
ctx
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def ready
|
30
|
-
puts "***** #{@jid} ready for #{self}"
|
31
|
-
on_exception(:anything) do |ctx|
|
32
|
-
raise ctx['error']
|
33
|
-
end
|
34
|
-
|
35
|
-
ask_roster
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
EM.run do
|
40
|
-
EM::Xmpp::Connection.start(jid, pass, MyClient)
|
41
|
-
end
|