blather 0.1 → 0.2
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 +2 -0
- data/Manifest +36 -33
- data/README.rdoc +11 -17
- data/Rakefile +4 -3
- data/blather.gemspec +9 -9
- data/examples/drb_client.rb +7 -0
- data/examples/echo.rb +9 -18
- data/lib/blather.rb +140 -31
- data/lib/blather/{core/errors.rb → errors.rb} +0 -0
- data/lib/blather/{core/jid.rb → jid.rb} +0 -0
- data/lib/blather/{core/roster.rb → roster.rb} +0 -0
- data/lib/blather/{core/roster_item.rb → roster_item.rb} +0 -0
- data/lib/blather/{core/stanza.rb → stanza.rb} +6 -14
- data/lib/blather/stanza/error.rb +31 -0
- data/lib/blather/{core/stanza → stanza}/iq.rb +2 -2
- data/lib/blather/stanza/iq/query.rb +50 -0
- data/lib/blather/{core/stanza → stanza}/iq/roster.rb +3 -3
- data/lib/blather/{core/stanza → stanza}/message.rb +6 -2
- data/lib/blather/{core/stanza → stanza}/presence.rb +10 -0
- data/lib/blather/{core/stanza → stanza}/presence/status.rb +8 -6
- data/lib/blather/{core/stanza → stanza}/presence/subscription.rb +1 -1
- data/lib/blather/{core/stream.rb → stream.rb} +1 -1
- data/lib/blather/{core/stream → stream}/parser.rb +0 -5
- data/lib/blather/{core/stream → stream}/resource.rb +0 -0
- data/lib/blather/{core/stream → stream}/sasl.rb +16 -5
- data/lib/blather/{core/stream → stream}/session.rb +0 -0
- data/lib/blather/{core/stream → stream}/tls.rb +0 -0
- data/lib/blather/{core/sugar.rb → sugar.rb} +4 -0
- data/lib/blather/{core/xmpp_node.rb → xmpp_node.rb} +1 -3
- data/spec/blather/{core/jid_spec.rb → jid_spec.rb} +16 -1
- data/spec/blather/{core/roster_item_spec.rb → roster_item_spec.rb} +1 -1
- data/spec/blather/{core/roster_spec.rb → roster_spec.rb} +11 -1
- data/spec/blather/stanza/iq/query_spec.rb +34 -0
- data/spec/blather/stanza/iq/roster_spec.rb +7 -0
- data/spec/blather/stanza/iq_spec.rb +11 -0
- data/spec/blather/stanza/message_spec.rb +52 -0
- data/spec/blather/stanza/presence/status_spec.rb +102 -0
- data/spec/blather/stanza/presence/subscription_spec.rb +74 -0
- data/spec/blather/stanza/presence_spec.rb +24 -0
- data/spec/blather/{core/stanza_spec.rb → stanza_spec.rb} +1 -1
- data/spec/blather/{core/stream_spec.rb → stream_spec.rb} +208 -9
- data/spec/blather/{core/xmpp_node_spec.rb → xmpp_node_spec.rb} +1 -1
- metadata +75 -69
- data/examples/shell_client.rb +0 -28
- data/lib/blather/callback.rb +0 -24
- data/lib/blather/client.rb +0 -81
- data/lib/blather/core/stanza/iq/query.rb +0 -42
- data/lib/blather/extensions.rb +0 -4
- data/lib/blather/extensions/last_activity.rb +0 -55
- data/lib/blather/extensions/version.rb +0 -85
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
@@ -1,43 +1,46 @@
|
|
1
1
|
CHANGELOG
|
2
|
+
examples/drb_client.rb
|
2
3
|
examples/echo.rb
|
3
|
-
examples/shell_client.rb
|
4
4
|
lib/autotest/discover.rb
|
5
5
|
lib/autotest/spec.rb
|
6
|
-
lib/blather/
|
7
|
-
lib/blather/
|
8
|
-
lib/blather/
|
9
|
-
lib/blather/
|
10
|
-
lib/blather/
|
11
|
-
lib/blather/
|
12
|
-
lib/blather/
|
13
|
-
lib/blather/
|
14
|
-
lib/blather/
|
15
|
-
lib/blather/
|
16
|
-
lib/blather/
|
17
|
-
lib/blather/
|
18
|
-
lib/blather/
|
19
|
-
lib/blather/
|
20
|
-
lib/blather/
|
21
|
-
lib/blather/
|
22
|
-
lib/blather/
|
23
|
-
lib/blather/
|
24
|
-
lib/blather/
|
25
|
-
lib/blather/
|
26
|
-
lib/blather/
|
27
|
-
lib/blather/core/xmpp_node.rb
|
28
|
-
lib/blather/extensions/last_activity.rb
|
29
|
-
lib/blather/extensions/version.rb
|
30
|
-
lib/blather/extensions.rb
|
6
|
+
lib/blather/errors.rb
|
7
|
+
lib/blather/jid.rb
|
8
|
+
lib/blather/roster.rb
|
9
|
+
lib/blather/roster_item.rb
|
10
|
+
lib/blather/stanza/error.rb
|
11
|
+
lib/blather/stanza/iq/query.rb
|
12
|
+
lib/blather/stanza/iq/roster.rb
|
13
|
+
lib/blather/stanza/iq.rb
|
14
|
+
lib/blather/stanza/message.rb
|
15
|
+
lib/blather/stanza/presence/status.rb
|
16
|
+
lib/blather/stanza/presence/subscription.rb
|
17
|
+
lib/blather/stanza/presence.rb
|
18
|
+
lib/blather/stanza.rb
|
19
|
+
lib/blather/stream/parser.rb
|
20
|
+
lib/blather/stream/resource.rb
|
21
|
+
lib/blather/stream/sasl.rb
|
22
|
+
lib/blather/stream/session.rb
|
23
|
+
lib/blather/stream/tls.rb
|
24
|
+
lib/blather/stream.rb
|
25
|
+
lib/blather/sugar.rb
|
26
|
+
lib/blather/xmpp_node.rb
|
31
27
|
lib/blather.rb
|
32
28
|
LICENSE
|
29
|
+
Manifest
|
33
30
|
Rakefile
|
34
31
|
README.rdoc
|
35
|
-
spec/blather/
|
36
|
-
spec/blather/
|
37
|
-
spec/blather/
|
38
|
-
spec/blather/
|
39
|
-
spec/blather/
|
40
|
-
spec/blather/
|
32
|
+
spec/blather/jid_spec.rb
|
33
|
+
spec/blather/roster_item_spec.rb
|
34
|
+
spec/blather/roster_spec.rb
|
35
|
+
spec/blather/stanza/iq/query_spec.rb
|
36
|
+
spec/blather/stanza/iq/roster_spec.rb
|
37
|
+
spec/blather/stanza/iq_spec.rb
|
38
|
+
spec/blather/stanza/message_spec.rb
|
39
|
+
spec/blather/stanza/presence/status_spec.rb
|
40
|
+
spec/blather/stanza/presence/subscription_spec.rb
|
41
|
+
spec/blather/stanza/presence_spec.rb
|
42
|
+
spec/blather/stanza_spec.rb
|
43
|
+
spec/blather/stream_spec.rb
|
44
|
+
spec/blather/xmpp_node_spec.rb
|
41
45
|
spec/build_safe.rb
|
42
46
|
spec/spec_helper.rb
|
43
|
-
Manifest
|
data/README.rdoc
CHANGED
@@ -30,28 +30,22 @@ Jeff Smick <sprsquish@gmail.com>
|
|
30
30
|
|
31
31
|
See the /examples directory for more advanced examples.
|
32
32
|
|
33
|
-
This will auto-accept any subscription requests and echo back any messages
|
33
|
+
This will auto-accept any subscription requests and echo back any chat messages.
|
34
34
|
|
35
|
-
require
|
35
|
+
%w[rubygems blather].each { |r| require r }
|
36
36
|
|
37
|
-
|
38
|
-
# Auto-approve subscription requests
|
39
|
-
def receive_subscription(s)
|
40
|
-
send_data(s.approve!) and true if s.request?
|
41
|
-
end
|
37
|
+
setup 'echo@jabber.local', 'echo'
|
42
38
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
# Echo message
|
49
|
-
def receive_message(message)
|
50
|
-
send_data(message.reply) if message.type == :chat
|
51
|
-
end
|
39
|
+
# Auto approve subscription requests
|
40
|
+
handle :subscription do |s|
|
41
|
+
write(s.approve!) if s.request?
|
52
42
|
end
|
53
43
|
|
54
|
-
|
44
|
+
# Echo back what was said
|
45
|
+
handle :message do |m|
|
46
|
+
write(m.reply) if m.chat? && m.body
|
47
|
+
end
|
48
|
+
|
55
49
|
|
56
50
|
|
57
51
|
= License
|
data/Rakefile
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
require 'echoe'
|
2
|
-
require 'lib/blather'
|
3
2
|
require 'hanna/rdoctask'
|
4
3
|
|
5
4
|
Echoe.new('blather') do |p|
|
6
5
|
p.author = 'Jeff Smick'
|
7
6
|
p.email = 'sprsquish@gmail.com'
|
7
|
+
p.url = 'http://github.com/sprsquish/blather/tree/master'
|
8
8
|
|
9
9
|
p.project = 'squishtech'
|
10
|
-
p.version = Blather::VERSION
|
11
10
|
p.summary = 'An evented XMPP library written on EventMachine and libxml-ruby'
|
12
11
|
|
13
|
-
p.runtime_dependencies = ['eventmachine', 'libxml >=
|
12
|
+
p.runtime_dependencies = ['eventmachine', 'libxml-ruby >=0.9.2']
|
14
13
|
p.rdoc_options += %w[-S -T hanna --main README.rdoc --exclude autotest]
|
14
|
+
|
15
15
|
p.test_pattern = 'spec/**/*_spec.rb'
|
16
|
+
p.rcov_options = ['--exclude \/Library\/Ruby\/Gems,spec\/', '--xrefs']
|
16
17
|
end
|
data/blather.gemspec
CHANGED
@@ -2,23 +2,23 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{blather}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jeff Smick"]
|
9
|
-
s.date = %q{2008-
|
9
|
+
s.date = %q{2008-12-19}
|
10
10
|
s.description = %q{An evented XMPP library written on EventMachine and libxml-ruby}
|
11
11
|
s.email = %q{sprsquish@gmail.com}
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "lib/autotest/discover.rb", "lib/autotest/spec.rb", "lib/blather/
|
13
|
-
s.files = ["CHANGELOG", "examples/
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG", "lib/autotest/discover.rb", "lib/autotest/spec.rb", "lib/blather/errors.rb", "lib/blather/jid.rb", "lib/blather/roster.rb", "lib/blather/roster_item.rb", "lib/blather/stanza/error.rb", "lib/blather/stanza/iq/query.rb", "lib/blather/stanza/iq/roster.rb", "lib/blather/stanza/iq.rb", "lib/blather/stanza/message.rb", "lib/blather/stanza/presence/status.rb", "lib/blather/stanza/presence/subscription.rb", "lib/blather/stanza/presence.rb", "lib/blather/stanza.rb", "lib/blather/stream/parser.rb", "lib/blather/stream/resource.rb", "lib/blather/stream/sasl.rb", "lib/blather/stream/session.rb", "lib/blather/stream/tls.rb", "lib/blather/stream.rb", "lib/blather/sugar.rb", "lib/blather/xmpp_node.rb", "lib/blather.rb", "LICENSE", "README.rdoc"]
|
13
|
+
s.files = ["CHANGELOG", "examples/drb_client.rb", "examples/echo.rb", "lib/autotest/discover.rb", "lib/autotest/spec.rb", "lib/blather/errors.rb", "lib/blather/jid.rb", "lib/blather/roster.rb", "lib/blather/roster_item.rb", "lib/blather/stanza/error.rb", "lib/blather/stanza/iq/query.rb", "lib/blather/stanza/iq/roster.rb", "lib/blather/stanza/iq.rb", "lib/blather/stanza/message.rb", "lib/blather/stanza/presence/status.rb", "lib/blather/stanza/presence/subscription.rb", "lib/blather/stanza/presence.rb", "lib/blather/stanza.rb", "lib/blather/stream/parser.rb", "lib/blather/stream/resource.rb", "lib/blather/stream/sasl.rb", "lib/blather/stream/session.rb", "lib/blather/stream/tls.rb", "lib/blather/stream.rb", "lib/blather/sugar.rb", "lib/blather/xmpp_node.rb", "lib/blather.rb", "LICENSE", "Manifest", "Rakefile", "README.rdoc", "spec/blather/jid_spec.rb", "spec/blather/roster_item_spec.rb", "spec/blather/roster_spec.rb", "spec/blather/stanza/iq/query_spec.rb", "spec/blather/stanza/iq/roster_spec.rb", "spec/blather/stanza/iq_spec.rb", "spec/blather/stanza/message_spec.rb", "spec/blather/stanza/presence/status_spec.rb", "spec/blather/stanza/presence/subscription_spec.rb", "spec/blather/stanza/presence_spec.rb", "spec/blather/stanza_spec.rb", "spec/blather/stream_spec.rb", "spec/blather/xmpp_node_spec.rb", "spec/build_safe.rb", "spec/spec_helper.rb", "blather.gemspec"]
|
14
14
|
s.has_rdoc = true
|
15
|
-
s.homepage = %q{}
|
15
|
+
s.homepage = %q{http://github.com/sprsquish/blather/tree/master}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Blather", "--main", "README.rdoc", "-S", "-T", "hanna", "--main", "README.rdoc", "--exclude", "autotest"]
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.rubyforge_project = %q{squishtech}
|
19
19
|
s.rubygems_version = %q{1.3.1}
|
20
20
|
s.summary = %q{An evented XMPP library written on EventMachine and libxml-ruby}
|
21
|
-
s.test_files = ["spec/blather/
|
21
|
+
s.test_files = ["spec/blather/jid_spec.rb", "spec/blather/roster_item_spec.rb", "spec/blather/roster_spec.rb", "spec/blather/stanza/iq/query_spec.rb", "spec/blather/stanza/iq/roster_spec.rb", "spec/blather/stanza/iq_spec.rb", "spec/blather/stanza/message_spec.rb", "spec/blather/stanza/presence/status_spec.rb", "spec/blather/stanza/presence/subscription_spec.rb", "spec/blather/stanza/presence_spec.rb", "spec/blather/stanza_spec.rb", "spec/blather/stream_spec.rb", "spec/blather/xmpp_node_spec.rb"]
|
22
22
|
|
23
23
|
if s.respond_to? :specification_version then
|
24
24
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -26,16 +26,16 @@ Gem::Specification.new do |s|
|
|
26
26
|
|
27
27
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
28
|
s.add_runtime_dependency(%q<eventmachine>, [">= 0"])
|
29
|
-
s.add_runtime_dependency(%q<libxml>, [">=
|
29
|
+
s.add_runtime_dependency(%q<libxml-ruby>, [">= 0.9.2"])
|
30
30
|
s.add_development_dependency(%q<echoe>, [">= 0"])
|
31
31
|
else
|
32
32
|
s.add_dependency(%q<eventmachine>, [">= 0"])
|
33
|
-
s.add_dependency(%q<libxml>, [">=
|
33
|
+
s.add_dependency(%q<libxml-ruby>, [">= 0.9.2"])
|
34
34
|
s.add_dependency(%q<echoe>, [">= 0"])
|
35
35
|
end
|
36
36
|
else
|
37
37
|
s.add_dependency(%q<eventmachine>, [">= 0"])
|
38
|
-
s.add_dependency(%q<libxml>, [">=
|
38
|
+
s.add_dependency(%q<libxml-ruby>, [">= 0.9.2"])
|
39
39
|
s.add_dependency(%q<echoe>, [">= 0"])
|
40
40
|
end
|
41
41
|
end
|
data/examples/echo.rb
CHANGED
@@ -1,22 +1,13 @@
|
|
1
|
-
|
2
|
-
include Blather
|
1
|
+
%w[rubygems lib/blather].each { |r| require r }
|
3
2
|
|
4
|
-
|
5
|
-
# Auto-approve subscription requests
|
6
|
-
def receive_subscription(s)
|
7
|
-
send_data(s.approve!) and true if s.request?
|
8
|
-
end
|
3
|
+
setup 'echo@jabber.local', 'echo'
|
9
4
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
# Echo message
|
16
|
-
def receive_message(message)
|
17
|
-
send_data(message.reply) if message.type == :chat
|
18
|
-
end
|
5
|
+
# Auto approve subscription requests
|
6
|
+
handle :subscription do |s|
|
7
|
+
write(s.approve!) if s.request?
|
19
8
|
end
|
20
9
|
|
21
|
-
#
|
22
|
-
|
10
|
+
# Echo back what was said
|
11
|
+
handle :message do |m|
|
12
|
+
write(m.reply) if m.chat? && m.body
|
13
|
+
end
|
data/lib/blather.rb
CHANGED
@@ -7,40 +7,149 @@ $:.unshift File.dirname(__FILE__)
|
|
7
7
|
digest/md5
|
8
8
|
logger
|
9
9
|
|
10
|
-
blather/
|
11
|
-
|
12
|
-
blather/
|
13
|
-
blather/
|
14
|
-
blather/
|
15
|
-
blather/
|
16
|
-
|
17
|
-
blather/
|
18
|
-
|
19
|
-
blather/
|
20
|
-
blather/
|
21
|
-
blather/
|
22
|
-
blather/
|
23
|
-
blather/
|
24
|
-
blather/
|
25
|
-
blather/
|
26
|
-
|
27
|
-
|
28
|
-
blather/
|
29
|
-
blather/
|
30
|
-
blather/
|
31
|
-
blather/
|
32
|
-
blather/
|
33
|
-
blather/core/stream/tls
|
10
|
+
blather/errors
|
11
|
+
blather/jid
|
12
|
+
blather/roster
|
13
|
+
blather/roster_item
|
14
|
+
blather/sugar
|
15
|
+
blather/xmpp_node
|
16
|
+
|
17
|
+
blather/stanza
|
18
|
+
blather/stanza/error
|
19
|
+
blather/stanza/iq
|
20
|
+
blather/stanza/iq/query
|
21
|
+
blather/stanza/iq/roster
|
22
|
+
blather/stanza/message
|
23
|
+
blather/stanza/presence
|
24
|
+
blather/stanza/presence/status
|
25
|
+
blather/stanza/presence/subscription
|
26
|
+
|
27
|
+
blather/stream
|
28
|
+
blather/stream/parser
|
29
|
+
blather/stream/resource
|
30
|
+
blather/stream/sasl
|
31
|
+
blather/stream/session
|
32
|
+
blather/stream/tls
|
34
33
|
].each { |r| require r }
|
35
34
|
|
36
|
-
XML
|
35
|
+
XML.indent_tree_output = false
|
37
36
|
|
38
37
|
module Blather
|
39
|
-
|
40
|
-
|
38
|
+
LOG = Logger.new(STDOUT)
|
39
|
+
|
40
|
+
class Client
|
41
|
+
attr_accessor :jid,
|
42
|
+
:roster
|
43
|
+
|
44
|
+
def initialize
|
45
|
+
@state = :initializing
|
46
|
+
|
47
|
+
@status = Stanza::Presence::Status.new
|
48
|
+
@handlers = Hash.new { |h,k| h[k] = [] }
|
49
|
+
@roster = Roster.new self
|
50
|
+
|
51
|
+
setup_initial_handlers
|
52
|
+
end
|
53
|
+
|
54
|
+
def register_handler(type, &handler)
|
55
|
+
@handlers[type] << handler
|
56
|
+
end
|
57
|
+
|
58
|
+
def status
|
59
|
+
@status.state
|
60
|
+
end
|
61
|
+
|
62
|
+
def status=(state)
|
63
|
+
state, msg, to = state
|
64
|
+
|
65
|
+
status = Stanza::Presence::Status.new state, msg
|
66
|
+
status.to = to
|
67
|
+
@status = status unless to
|
68
|
+
|
69
|
+
write status
|
70
|
+
end
|
71
|
+
|
72
|
+
def write(data)
|
73
|
+
@stream.send(data) if @stream
|
74
|
+
end
|
75
|
+
|
76
|
+
def stream_started(stream)
|
77
|
+
@stream = stream
|
78
|
+
|
79
|
+
#retreive roster
|
80
|
+
write Stanza::Iq::Roster.new
|
81
|
+
end
|
82
|
+
|
83
|
+
def call(stanza)
|
84
|
+
stanza.handler_heirarchy.each do |type|
|
85
|
+
break if call_handler_for(type, stanza) && stanza.type == :iq
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def call_handler_for(type, stanza)
|
90
|
+
if @handlers[type]
|
91
|
+
@handlers[type].each { |handler| handler.call(stanza) }
|
92
|
+
true
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
protected
|
97
|
+
def setup_initial_handlers
|
98
|
+
register_handler :iq do |iq|
|
99
|
+
write(Stanza::Error.new_from(iq, 'service-unavailable', 'cancel').reply!) if [:set, :get].include?(iq.type)
|
100
|
+
end
|
101
|
+
|
102
|
+
register_handler :status do |status|
|
103
|
+
roster[status.from].status = status if roster[status.from]
|
104
|
+
end
|
105
|
+
|
106
|
+
register_handler :roster do |node|
|
107
|
+
roster.process node
|
108
|
+
if @state == :initializing
|
109
|
+
@state = :ready
|
110
|
+
write @status
|
111
|
+
call_handler_for :ready, nil
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
end #Client
|
117
|
+
|
118
|
+
module Application
|
119
|
+
@@client = Blather::Client.new
|
120
|
+
|
121
|
+
def setup(jid, password, host = nil, port = 5222)
|
122
|
+
at_exit do
|
123
|
+
trap(:INT) { EM.stop }
|
124
|
+
EM.run { Blather::Stream.start @@client, Blather::JID.new(jid), password, host, port }
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def daemonize
|
129
|
+
@daemonize = true
|
130
|
+
end
|
131
|
+
|
132
|
+
def handle(stanza_type, &block)
|
133
|
+
@@client.register_handler stanza_type, &block
|
134
|
+
end
|
135
|
+
|
136
|
+
def status(state = nil, msg = nil)
|
137
|
+
@@client.status = state, msg
|
138
|
+
end
|
139
|
+
|
140
|
+
def roster
|
141
|
+
@@client.roster
|
142
|
+
end
|
143
|
+
|
144
|
+
def write(stanza)
|
145
|
+
@@client.write(stanza)
|
146
|
+
end
|
147
|
+
|
148
|
+
def say(to, msg)
|
149
|
+
@@client.write Blather::Stanza::Message.new(to, msg)
|
150
|
+
end
|
151
|
+
end #Application
|
41
152
|
|
42
|
-
def run(jid, password, client, host = nil, port = 5222)
|
43
|
-
EM.run { Stream.start client, JID.new(jid), password, host, port }
|
44
|
-
end
|
45
|
-
module_function :run
|
46
153
|
end
|
154
|
+
|
155
|
+
include Blather::Application
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -2,13 +2,7 @@ module Blather
|
|
2
2
|
##
|
3
3
|
# Base XMPP Stanza
|
4
4
|
class Stanza < XMPPNode
|
5
|
-
|
6
|
-
|
7
|
-
def self.registered_callbacks
|
8
|
-
@@registered_callbacks
|
9
|
-
end
|
10
|
-
|
11
|
-
class_inheritable_array :callback_heirarchy
|
5
|
+
class_inheritable_array :handler_heirarchy
|
12
6
|
|
13
7
|
##
|
14
8
|
# Registers a callback onto the callback heirarchy stack
|
@@ -17,13 +11,11 @@ module Blather
|
|
17
11
|
# that inherits Stanza can register a callback for itself
|
18
12
|
# which is added to a list and iterated over when looking for
|
19
13
|
# a callback to use
|
20
|
-
def self.register(
|
21
|
-
|
22
|
-
|
23
|
-
self.callback_heirarchy ||= []
|
24
|
-
self.callback_heirarchy.unshift callback_type
|
14
|
+
def self.register(type, name = nil, xmlns = nil)
|
15
|
+
self.handler_heirarchy ||= []
|
16
|
+
self.handler_heirarchy.unshift type
|
25
17
|
|
26
|
-
name = name || self.name ||
|
18
|
+
name = name || self.name || type
|
27
19
|
super name, xmlns
|
28
20
|
end
|
29
21
|
|
@@ -109,7 +101,7 @@ module Blather
|
|
109
101
|
##
|
110
102
|
# returns:: a symbol of the type
|
111
103
|
def type
|
112
|
-
self['type'].to_sym
|
104
|
+
self['type'].to_sym unless self['type'].nil? || self['type'].empty?
|
113
105
|
end
|
114
106
|
|
115
107
|
end
|