jabber4r-revive 0.9.0 → 0.10.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/.gitignore +5 -4
- data/.rspec +3 -3
- data/.travis.yml +7 -7
- data/CHANGELOG +11 -1
- data/Gemfile +3 -3
- data/README.md +29 -29
- data/Rakefile +70 -70
- data/jabber4r-revive.gemspec +25 -25
- data/lib/jabber4r.rb +38 -33
- data/lib/jabber4r/bosh.rb +21 -0
- data/lib/jabber4r/bosh/authentication.rb +13 -0
- data/lib/jabber4r/bosh/authentication/non_sasl.rb +219 -0
- data/lib/jabber4r/bosh/authentication/sasl.rb +239 -0
- data/lib/jabber4r/bosh/session.rb +144 -0
- data/lib/jabber4r/connection.rb +259 -258
- data/lib/jabber4r/debugger.rb +60 -60
- data/lib/jabber4r/jid.rb +20 -19
- data/lib/jabber4r/protocol.rb +249 -257
- data/lib/jabber4r/protocol/authentication.rb +14 -0
- data/lib/jabber4r/protocol/authentication/non_sasl.rb +138 -0
- data/lib/jabber4r/protocol/authentication/sasl.rb +88 -0
- data/lib/jabber4r/protocol/iq.rb +259 -259
- data/lib/jabber4r/protocol/message.rb +245 -245
- data/lib/jabber4r/protocol/parsed_xml_element.rb +207 -207
- data/lib/jabber4r/protocol/presence.rb +160 -160
- data/lib/jabber4r/protocol/xml_element.rb +143 -143
- data/lib/jabber4r/rexml_1.8_patch.rb +15 -15
- data/lib/jabber4r/roster.rb +38 -38
- data/lib/jabber4r/session.rb +615 -615
- data/lib/jabber4r/version.rb +10 -3
- data/spec/lib/jabber4r/bosh/authentication/non_sasl_spec.rb +79 -0
- data/spec/lib/jabber4r/bosh/authentication/sasl_spec.rb +42 -0
- data/spec/lib/jabber4r/bosh/session_spec.rb +406 -0
- data/spec/lib/jabber4r/bosh_spec.rb +0 -0
- data/spec/lib/jabber4r/connection_spec.rb +174 -174
- data/spec/lib/jabber4r/debugger_spec.rb +35 -35
- data/spec/lib/jabber4r/jid_spec.rb +197 -197
- data/spec/lib/jabber4r/protocol/authentication/non_sasl_spec.rb +79 -0
- data/spec/lib/jabber4r/protocol/authentication/sasl_spec.rb +42 -0
- data/spec/spec_helper.rb +11 -11
- data/spec/support/mocks/tcp_socket_mock.rb +8 -8
- metadata +61 -45
- data/Gemfile.lock +0 -45
- data/lib/jabber4r/bosh_session.rb +0 -224
- data/spec/lib/jabber4r/bosh_session_spec.rb +0 -150
@@ -1,144 +1,144 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
# License: see LICENSE
|
4
|
-
# Jabber4R - Jabber Instant Messaging Library for Ruby
|
5
|
-
# Copyright (C) 2002 Rich Kilmer <rich@infoether.com>
|
6
|
-
|
7
|
-
module Jabber::Protocol
|
8
|
-
##
|
9
|
-
# Utility class to create valid XML strings
|
10
|
-
#
|
11
|
-
class XMLElement
|
12
|
-
|
13
|
-
# The parent XMLElement
|
14
|
-
attr_accessor :parent
|
15
|
-
|
16
|
-
##
|
17
|
-
# Construct an XMLElement for the supplied tag and attributes
|
18
|
-
#
|
19
|
-
# tag:: [String] XML tag
|
20
|
-
# attributes:: [Hash = {}] The attribute hash[attribute]=value
|
21
|
-
def initialize(tag, attributes={})
|
22
|
-
@tag = tag
|
23
|
-
@elements = []
|
24
|
-
@attributes = attributes
|
25
|
-
@data = ""
|
26
|
-
end
|
27
|
-
|
28
|
-
##
|
29
|
-
# Adds an attribute to this element
|
30
|
-
#
|
31
|
-
# attrib:: [String] The attribute name
|
32
|
-
# value:: [String] The attribute value
|
33
|
-
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
34
|
-
#
|
35
|
-
def add_attribute(attrib, value)
|
36
|
-
@attributes[attrib]=value
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
##
|
41
|
-
# Adds data to this element
|
42
|
-
#
|
43
|
-
# data:: [String] The data to add
|
44
|
-
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
45
|
-
#
|
46
|
-
def add_data(data)
|
47
|
-
@data += data.to_s
|
48
|
-
self
|
49
|
-
end
|
50
|
-
|
51
|
-
##
|
52
|
-
# Sets the namespace for this tag
|
53
|
-
#
|
54
|
-
# ns:: [String] The namespace
|
55
|
-
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
56
|
-
#
|
57
|
-
def set_namespace(ns)
|
58
|
-
@tag+=":#{ns}"
|
59
|
-
self
|
60
|
-
end
|
61
|
-
|
62
|
-
##
|
63
|
-
# Adds cdata to this element
|
64
|
-
#
|
65
|
-
# cdata:: [String] The cdata to add
|
66
|
-
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
67
|
-
#
|
68
|
-
def add_cdata(cdata)
|
69
|
-
@data += "<![CDATA[#{cdata.to_s}]]>"
|
70
|
-
self
|
71
|
-
end
|
72
|
-
|
73
|
-
##
|
74
|
-
# Returns the parent element
|
75
|
-
#
|
76
|
-
# return:: [Jabber::Protocol::XMLElement] The parent XMLElement
|
77
|
-
#
|
78
|
-
def to_parent
|
79
|
-
@parent
|
80
|
-
end
|
81
|
-
|
82
|
-
##
|
83
|
-
# Adds a child to this element of the supplied tag
|
84
|
-
#
|
85
|
-
# tag:: [String] The element tag
|
86
|
-
# attributes:: [Hash = {}] The attributes hash[attribute]=value
|
87
|
-
# return:: [Jabber::Protocol::XMLElement] newly created child element
|
88
|
-
#
|
89
|
-
def add_child(tag, attributes={})
|
90
|
-
child = XMLElement.new(tag, attributes)
|
91
|
-
child.parent = self
|
92
|
-
@elements << child
|
93
|
-
return child
|
94
|
-
end
|
95
|
-
|
96
|
-
##
|
97
|
-
# Adds arbitrary XML data to this object
|
98
|
-
#
|
99
|
-
# xml:: [String] the xml to add
|
100
|
-
#
|
101
|
-
def add_xml(xml)
|
102
|
-
@xml = xml
|
103
|
-
end
|
104
|
-
|
105
|
-
##
|
106
|
-
# Recursively builds the XML string by traversing this element's
|
107
|
-
# children.
|
108
|
-
#
|
109
|
-
# format:: [Boolean] True to pretty-print (format) the output string
|
110
|
-
# indent:: [Integer = 0] The indent level (recursively more)
|
111
|
-
#
|
112
|
-
def to_xml(format, indent=0)
|
113
|
-
result = ""
|
114
|
-
result += " "*indent if format
|
115
|
-
result += "<#{@tag}"
|
116
|
-
@attributes.each {|attrib, value| result += (' '+attrib.to_s+'="'+value.to_s+'"') }
|
117
|
-
if @data=="" and @elements.size==0
|
118
|
-
result +="/>"
|
119
|
-
result +="\n" if format
|
120
|
-
return result
|
121
|
-
end
|
122
|
-
result += ">"
|
123
|
-
result += "\n" if format and @data==""
|
124
|
-
result += @data if @data!=""
|
125
|
-
@elements.each {|element| result+=element.to_xml(format, indent+4)}
|
126
|
-
result += @xml if not @xml.nil?
|
127
|
-
result += " "*indent if format and @data==""
|
128
|
-
result+="</#{@tag}>"
|
129
|
-
result+="\n" if format
|
130
|
-
return result
|
131
|
-
end
|
132
|
-
|
133
|
-
##
|
134
|
-
# Climbs to the top of this elements parent tree and then returns
|
135
|
-
# the to_xml XML string.
|
136
|
-
#
|
137
|
-
# return:: [String] The XML string of this element (from the topmost parent).
|
138
|
-
#
|
139
|
-
def to_s
|
140
|
-
return @parent.to_s if @parent
|
141
|
-
return to_xml(true)
|
142
|
-
end
|
143
|
-
end
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
# License: see LICENSE
|
4
|
+
# Jabber4R - Jabber Instant Messaging Library for Ruby
|
5
|
+
# Copyright (C) 2002 Rich Kilmer <rich@infoether.com>
|
6
|
+
|
7
|
+
module Jabber::Protocol
|
8
|
+
##
|
9
|
+
# Utility class to create valid XML strings
|
10
|
+
#
|
11
|
+
class XMLElement
|
12
|
+
|
13
|
+
# The parent XMLElement
|
14
|
+
attr_accessor :parent
|
15
|
+
|
16
|
+
##
|
17
|
+
# Construct an XMLElement for the supplied tag and attributes
|
18
|
+
#
|
19
|
+
# tag:: [String] XML tag
|
20
|
+
# attributes:: [Hash = {}] The attribute hash[attribute]=value
|
21
|
+
def initialize(tag, attributes={})
|
22
|
+
@tag = tag
|
23
|
+
@elements = []
|
24
|
+
@attributes = attributes
|
25
|
+
@data = ""
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Adds an attribute to this element
|
30
|
+
#
|
31
|
+
# attrib:: [String] The attribute name
|
32
|
+
# value:: [String] The attribute value
|
33
|
+
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
34
|
+
#
|
35
|
+
def add_attribute(attrib, value)
|
36
|
+
@attributes[attrib]=value
|
37
|
+
self
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# Adds data to this element
|
42
|
+
#
|
43
|
+
# data:: [String] The data to add
|
44
|
+
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
45
|
+
#
|
46
|
+
def add_data(data)
|
47
|
+
@data += data.to_s
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Sets the namespace for this tag
|
53
|
+
#
|
54
|
+
# ns:: [String] The namespace
|
55
|
+
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
56
|
+
#
|
57
|
+
def set_namespace(ns)
|
58
|
+
@tag+=":#{ns}"
|
59
|
+
self
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# Adds cdata to this element
|
64
|
+
#
|
65
|
+
# cdata:: [String] The cdata to add
|
66
|
+
# return:: [Jabber::Protocol::XMLElement] self for chaining
|
67
|
+
#
|
68
|
+
def add_cdata(cdata)
|
69
|
+
@data += "<![CDATA[#{cdata.to_s}]]>"
|
70
|
+
self
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
# Returns the parent element
|
75
|
+
#
|
76
|
+
# return:: [Jabber::Protocol::XMLElement] The parent XMLElement
|
77
|
+
#
|
78
|
+
def to_parent
|
79
|
+
@parent
|
80
|
+
end
|
81
|
+
|
82
|
+
##
|
83
|
+
# Adds a child to this element of the supplied tag
|
84
|
+
#
|
85
|
+
# tag:: [String] The element tag
|
86
|
+
# attributes:: [Hash = {}] The attributes hash[attribute]=value
|
87
|
+
# return:: [Jabber::Protocol::XMLElement] newly created child element
|
88
|
+
#
|
89
|
+
def add_child(tag, attributes={})
|
90
|
+
child = XMLElement.new(tag, attributes)
|
91
|
+
child.parent = self
|
92
|
+
@elements << child
|
93
|
+
return child
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Adds arbitrary XML data to this object
|
98
|
+
#
|
99
|
+
# xml:: [String] the xml to add
|
100
|
+
#
|
101
|
+
def add_xml(xml)
|
102
|
+
@xml = xml
|
103
|
+
end
|
104
|
+
|
105
|
+
##
|
106
|
+
# Recursively builds the XML string by traversing this element's
|
107
|
+
# children.
|
108
|
+
#
|
109
|
+
# format:: [Boolean] True to pretty-print (format) the output string
|
110
|
+
# indent:: [Integer = 0] The indent level (recursively more)
|
111
|
+
#
|
112
|
+
def to_xml(format, indent=0)
|
113
|
+
result = ""
|
114
|
+
result += " "*indent if format
|
115
|
+
result += "<#{@tag}"
|
116
|
+
@attributes.each {|attrib, value| result += (' '+attrib.to_s+'="'+value.to_s+'"') }
|
117
|
+
if @data=="" and @elements.size==0
|
118
|
+
result +="/>"
|
119
|
+
result +="\n" if format
|
120
|
+
return result
|
121
|
+
end
|
122
|
+
result += ">"
|
123
|
+
result += "\n" if format and @data==""
|
124
|
+
result += @data if @data!=""
|
125
|
+
@elements.each {|element| result+=element.to_xml(format, indent+4)}
|
126
|
+
result += @xml if not @xml.nil?
|
127
|
+
result += " "*indent if format and @data==""
|
128
|
+
result+="</#{@tag}>"
|
129
|
+
result+="\n" if format
|
130
|
+
return result
|
131
|
+
end
|
132
|
+
|
133
|
+
##
|
134
|
+
# Climbs to the top of this elements parent tree and then returns
|
135
|
+
# the to_xml XML string.
|
136
|
+
#
|
137
|
+
# return:: [String] The XML string of this element (from the topmost parent).
|
138
|
+
#
|
139
|
+
def to_s
|
140
|
+
return @parent.to_s if @parent
|
141
|
+
return to_xml(true)
|
142
|
+
end
|
143
|
+
end
|
144
144
|
end
|
@@ -1,16 +1,16 @@
|
|
1
|
-
if RUBY_VERSION=="1.8.0"
|
2
|
-
module REXML
|
3
|
-
module Parsers
|
4
|
-
class BaseParser
|
5
|
-
# Returns true if there are more events. Synonymous with !empty?
|
6
|
-
def has_next?
|
7
|
-
return true if @closed # THIS WAS ADDED TO FIX PROBLEM
|
8
|
-
@source.read if @source.buffer.size==0 and !@source.empty?
|
9
|
-
(!@source.empty? and @source.buffer.strip.size>0) or @stack.size>0 or @closed
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
else
|
15
|
-
puts "WARNING: rexml_1.8_patch is needed on Ruby 1.8.0 and not by Ruby #{RUBY_VERSION}"
|
1
|
+
if RUBY_VERSION=="1.8.0"
|
2
|
+
module REXML
|
3
|
+
module Parsers
|
4
|
+
class BaseParser
|
5
|
+
# Returns true if there are more events. Synonymous with !empty?
|
6
|
+
def has_next?
|
7
|
+
return true if @closed # THIS WAS ADDED TO FIX PROBLEM
|
8
|
+
@source.read if @source.buffer.size==0 and !@source.empty?
|
9
|
+
(!@source.empty? and @source.buffer.strip.size>0) or @stack.size>0 or @closed
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
else
|
15
|
+
puts "WARNING: rexml_1.8_patch is needed on Ruby 1.8.0 and not by Ruby #{RUBY_VERSION}"
|
16
16
|
end
|
data/lib/jabber4r/roster.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# License: see LICENSE.txt
|
2
2
|
# Jabber4R - Jabber Instant Messaging Library for Ruby
|
3
3
|
# Copyright (C) 2002 Rich Kilmer <rich@infoether.com>
|
4
|
-
#
|
4
|
+
#
|
5
5
|
|
6
6
|
|
7
7
|
module Jabber
|
@@ -9,17 +9,17 @@ module Jabber
|
|
9
9
|
##
|
10
10
|
# The Roster class encapsulates the runtime roster of the session instance.
|
11
11
|
# The Roster contains all subscriptions in a Jabber::Roster::RosterItem hash.
|
12
|
-
#
|
12
|
+
#
|
13
13
|
class Roster
|
14
14
|
ITEM_ADDED=1
|
15
15
|
ITEM_DELETED=2
|
16
16
|
RESOURCE_ADDED=4
|
17
17
|
RESOURCE_UPDATED=8
|
18
18
|
RESOURCE_DELETED=16
|
19
|
-
|
19
|
+
|
20
20
|
# The Jabber::Session instance
|
21
21
|
attr_reader :session
|
22
|
-
|
22
|
+
|
23
23
|
##
|
24
24
|
# Creates a Roster for the session
|
25
25
|
#
|
@@ -30,7 +30,7 @@ module Jabber
|
|
30
30
|
@map = {}
|
31
31
|
@listeners = {}
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
##
|
35
35
|
# The RosterItem class embodies another Jabber user's status (from
|
36
36
|
# the local user's perspective). RosterItems contain
|
@@ -40,19 +40,19 @@ module Jabber
|
|
40
40
|
class RosterItem
|
41
41
|
# The Jabber::Roster instance
|
42
42
|
attr_reader :roster
|
43
|
-
|
43
|
+
|
44
44
|
# The Jabber ID (Jabber::JID)
|
45
45
|
attr_accessor :jid
|
46
|
-
|
46
|
+
|
47
47
|
# The subscription type
|
48
48
|
attr_accessor :subscription
|
49
|
-
|
49
|
+
|
50
50
|
# The (nick)name of this account
|
51
51
|
attr_accessor :name
|
52
|
-
|
52
|
+
|
53
53
|
# The group name for this account
|
54
54
|
attr_accessor :group
|
55
|
-
|
55
|
+
|
56
56
|
##
|
57
57
|
# Constructs a RosterItem
|
58
58
|
#
|
@@ -69,22 +69,22 @@ module Jabber
|
|
69
69
|
@resources = {}
|
70
70
|
@roster = roster
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
##
|
74
74
|
# The Resource class embodies a Resource endpoint in Jabber.
|
75
75
|
# The resource endpoint it what maintains a status (not an account).
|
76
76
|
#
|
77
77
|
class Resource
|
78
|
-
|
78
|
+
|
79
79
|
# The name of the resource
|
80
80
|
attr_reader :name
|
81
|
-
|
81
|
+
|
82
82
|
# How the resource should be shown
|
83
83
|
attr_reader :show
|
84
|
-
|
84
|
+
|
85
85
|
# The status message of the resource
|
86
86
|
attr_reader :status
|
87
|
-
|
87
|
+
|
88
88
|
##
|
89
89
|
# Constructs a new Resource instance
|
90
90
|
#
|
@@ -99,7 +99,7 @@ module Jabber
|
|
99
99
|
@show = show
|
100
100
|
@status = status
|
101
101
|
end
|
102
|
-
|
102
|
+
|
103
103
|
##
|
104
104
|
# Updates the state of a resource and notifies listeners.
|
105
105
|
#
|
@@ -111,7 +111,7 @@ module Jabber
|
|
111
111
|
@status = status
|
112
112
|
@item.roster.notify_listeners(RESOURCE_UPDATED, self)
|
113
113
|
end
|
114
|
-
|
114
|
+
|
115
115
|
##
|
116
116
|
# Dumps the Resource as a string
|
117
117
|
#
|
@@ -121,7 +121,7 @@ module Jabber
|
|
121
121
|
"RESOURCE:#{@name} SHOW:#{@show} STATUS:#{@status}"
|
122
122
|
end
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
##
|
126
126
|
# Retrieves the VCard for this (RosterItem) account. This method
|
127
127
|
# blocks until the the vcard is returned.
|
@@ -143,7 +143,7 @@ module Jabber
|
|
143
143
|
Thread.stop
|
144
144
|
return result
|
145
145
|
end
|
146
|
-
|
146
|
+
|
147
147
|
##
|
148
148
|
# Adds a new resource to the Roster item and notifies listeners
|
149
149
|
#
|
@@ -158,7 +158,7 @@ module Jabber
|
|
158
158
|
@roster.notify_listeners(RESOURCE_ADDED, resource)
|
159
159
|
resource
|
160
160
|
end
|
161
|
-
|
161
|
+
|
162
162
|
##
|
163
163
|
# Deletes a resource from this roster item and notifies listeners
|
164
164
|
#
|
@@ -170,7 +170,7 @@ module Jabber
|
|
170
170
|
@roster.notify_listeners(RESOURCE_DELETED, resource) if resource
|
171
171
|
resource
|
172
172
|
end
|
173
|
-
|
173
|
+
|
174
174
|
##
|
175
175
|
# Retrieves a resource object
|
176
176
|
#
|
@@ -180,7 +180,7 @@ module Jabber
|
|
180
180
|
def [](resourceName)
|
181
181
|
return @resources[resourceName]
|
182
182
|
end
|
183
|
-
|
183
|
+
|
184
184
|
##
|
185
185
|
# Iterates over the list of available resources
|
186
186
|
#
|
@@ -189,7 +189,7 @@ module Jabber
|
|
189
189
|
def each_resource
|
190
190
|
@resources.each_value {|resource| yield resource}
|
191
191
|
end
|
192
|
-
|
192
|
+
|
193
193
|
##
|
194
194
|
# Dumps the roster item
|
195
195
|
#
|
@@ -198,7 +198,7 @@ module Jabber
|
|
198
198
|
"ITEM:#{@jid.to_s} SUBSCRIPTION:#{@subscription} NAME:#{@name} GROUP:#{@group}"
|
199
199
|
end
|
200
200
|
end
|
201
|
-
|
201
|
+
|
202
202
|
##
|
203
203
|
# Adds a listener to the roster to process roster changes
|
204
204
|
#
|
@@ -210,7 +210,7 @@ module Jabber
|
|
210
210
|
@listeners[id]=block if block
|
211
211
|
return id
|
212
212
|
end
|
213
|
-
|
213
|
+
|
214
214
|
##
|
215
215
|
# Deletes a listener for processing roster messages
|
216
216
|
#
|
@@ -219,7 +219,7 @@ module Jabber
|
|
219
219
|
def delete_listener(id)
|
220
220
|
@listeners.delete(id)
|
221
221
|
end
|
222
|
-
|
222
|
+
|
223
223
|
##
|
224
224
|
# Adds a subscription to be tracked in the Roster
|
225
225
|
#
|
@@ -230,10 +230,10 @@ module Jabber
|
|
230
230
|
#
|
231
231
|
def add(jid, subscription, name, group=nil)
|
232
232
|
if jid.kind_of? String
|
233
|
-
jid = JID.new(jid)
|
233
|
+
jid = JID.new(jid)
|
234
234
|
jid.strip!
|
235
235
|
elsif jid.kind_of? JID
|
236
|
-
jid = JID.new(jid.node+"@"+jid.
|
236
|
+
jid = JID.new(jid.node+"@"+jid.domain)
|
237
237
|
else
|
238
238
|
return
|
239
239
|
end
|
@@ -245,7 +245,7 @@ module Jabber
|
|
245
245
|
puts ex.backtrace.join("\n")
|
246
246
|
end
|
247
247
|
end
|
248
|
-
|
248
|
+
|
249
249
|
##
|
250
250
|
# Returns a Jabber::Roster::RosterItem based on the JID
|
251
251
|
#
|
@@ -254,16 +254,16 @@ module Jabber
|
|
254
254
|
#
|
255
255
|
def [](jid)
|
256
256
|
if jid.kind_of? String
|
257
|
-
jid = JID.new(jid)
|
257
|
+
jid = JID.new(jid)
|
258
258
|
jid.strip!
|
259
259
|
elsif jid.kind_of? JID
|
260
|
-
jid = JID.new(jid.node+"@"+jid.
|
260
|
+
jid = JID.new(jid.node+"@"+jid.domain)
|
261
261
|
else
|
262
262
|
return
|
263
263
|
end
|
264
264
|
return @map[jid.to_s]
|
265
265
|
end
|
266
|
-
|
266
|
+
|
267
267
|
##
|
268
268
|
# Deletes a roster item based on the supplied Jabber ID
|
269
269
|
#
|
@@ -274,7 +274,7 @@ module Jabber
|
|
274
274
|
jid = JID.new(jid)
|
275
275
|
jid.strip!
|
276
276
|
elsif jid.kind_of? JID
|
277
|
-
jid = JID.new(jid.node+"@"+jid.
|
277
|
+
jid = JID.new(jid.node+"@"+jid.domain)
|
278
278
|
else
|
279
279
|
return
|
280
280
|
end
|
@@ -282,7 +282,7 @@ module Jabber
|
|
282
282
|
notify_listeners(ITEM_DELETED, item) if item
|
283
283
|
item
|
284
284
|
end
|
285
|
-
|
285
|
+
|
286
286
|
##
|
287
287
|
# Iterates over each RosterItem
|
288
288
|
#
|
@@ -291,7 +291,7 @@ module Jabber
|
|
291
291
|
def each_item
|
292
292
|
@map.each_value {|item| yield item}
|
293
293
|
end
|
294
|
-
|
294
|
+
|
295
295
|
##
|
296
296
|
# Dumps the Roster state as a string
|
297
297
|
#
|
@@ -308,15 +308,15 @@ module Jabber
|
|
308
308
|
|
309
309
|
##
|
310
310
|
# Notifies listeners of a roster change event
|
311
|
-
#
|
311
|
+
#
|
312
312
|
# event:: [Integer] The roster event
|
313
313
|
# object:: [RosterItem] The modified item
|
314
314
|
#
|
315
315
|
def notify_listeners(event, object)
|
316
316
|
@listeners.each_value {|listener| listener.call(event, object)}
|
317
317
|
end
|
318
|
-
|
318
|
+
|
319
319
|
end
|
320
|
-
|
320
|
+
|
321
321
|
end
|
322
322
|
|