Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F947562
xmppSession.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
14 KB
Subscribers
None
xmppSession.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.xmpp.xmppSession"
]){
dojo
.
_hasResource
[
"dojox.xmpp.xmppSession"
]
=
true
;
dojo
.
provide
(
"dojox.xmpp.xmppSession"
);
dojo
.
require
(
"dojox.xmpp.TransportSession"
);
dojo
.
require
(
"dojox.xmpp.RosterService"
);
dojo
.
require
(
"dojox.xmpp.PresenceService"
);
dojo
.
require
(
"dojox.xmpp.UserService"
);
dojo
.
require
(
"dojox.xmpp.ChatService"
);
dojo
.
require
(
"dojox.xmpp.sasl"
);
dojox
.
xmpp
.
xmpp
=
{
STREAM_NS
:
"http://etherx.jabber.org/streams"
,
CLIENT_NS
:
"jabber:client"
,
STANZA_NS
:
"urn:ietf:params:xml:ns:xmpp-stanzas"
,
SASL_NS
:
"urn:ietf:params:xml:ns:xmpp-sasl"
,
BIND_NS
:
"urn:ietf:params:xml:ns:xmpp-bind"
,
SESSION_NS
:
"urn:ietf:params:xml:ns:xmpp-session"
,
BODY_NS
:
"http://jabber.org/protocol/httpbind"
,
XHTML_BODY_NS
:
"http://www.w3.org/1999/xhtml"
,
XHTML_IM_NS
:
"http://jabber.org/protocol/xhtml-im"
,
INACTIVE
:
"Inactive"
,
CONNECTED
:
"Connected"
,
ACTIVE
:
"Active"
,
TERMINATE
:
"Terminate"
,
LOGIN_FAILURE
:
"LoginFailure"
,
INVALID_ID
:-
1
,
NO_ID
:
0
,
error
:
{
BAD_REQUEST
:
"bad-request"
,
CONFLICT
:
"conflict"
,
FEATURE_NOT_IMPLEMENTED
:
"feature-not-implemented"
,
FORBIDDEN
:
"forbidden"
,
GONE
:
"gone"
,
INTERNAL_SERVER_ERROR
:
"internal-server-error"
,
ITEM_NOT_FOUND
:
"item-not-found"
,
ID_MALFORMED
:
"jid-malformed"
,
NOT_ACCEPTABLE
:
"not-acceptable"
,
NOT_ALLOWED
:
"not-allowed"
,
NOT_AUTHORIZED
:
"not-authorized"
,
SERVICE_UNAVAILABLE
:
"service-unavailable"
,
SUBSCRIPTION_REQUIRED
:
"subscription-required"
,
UNEXPECTED_REQUEST
:
"unexpected-request"
}};
dojox
.
xmpp
.
xmppSession
=
function
(
_1
){
this
.
roster
=
[];
this
.
chatRegister
=
[];
this
.
_iqId
=
Math
.
round
(
Math
.
random
()
*
1000000000
);
if
(
_1
&&
dojo
.
isObject
(
_1
)){
dojo
.
mixin
(
this
,
_1
);
}
this
.
session
=
new
dojox
.
xmpp
.
TransportSession
(
_1
);
dojo
.
connect
(
this
.
session
,
"onReady"
,
this
,
"onTransportReady"
);
dojo
.
connect
(
this
.
session
,
"onTerminate"
,
this
,
"onTransportTerminate"
);
dojo
.
connect
(
this
.
session
,
"onProcessProtocolResponse"
,
this
,
"processProtocolResponse"
);
};
dojo
.
extend
(
dojox
.
xmpp
.
xmppSession
,{
roster
:
[],
chatRegister
:
[],
_iqId
:
0
,
open
:
function
(
_2
,
_3
,
_4
){
if
(
!
_2
){
throw
new
Error
(
"User id cannot be null"
);
}
else
{
this
.
jid
=
_2
;
if
(
_2
.
indexOf
(
"@"
)
==-
1
){
this
.
jid
=
this
.
jid
+
"@"
+
this
.
domain
;
}
}
if
(
_3
){
this
.
password
=
_3
;
}
if
(
_4
){
this
.
resource
=
_4
;
}
this
.
session
.
open
();
},
close
:
function
(){
this
.
state
=
dojox
.
xmpp
.
xmpp
.
TERMINATE
;
this
.
session
.
close
(
dojox
.
xmpp
.
util
.
createElement
(
"presence"
,{
type
:
"unavailable"
,
xmlns
:
dojox
.
xmpp
.
xmpp
.
CLIENT_NS
},
true
));
},
processProtocolResponse
:
function
(
_5
){
var
_6
=
_5
.
nodeName
;
var
_7
=
_6
.
indexOf
(
":"
);
if
(
_7
>
0
){
_6
=
_6
.
substring
(
_7
+
1
);
}
switch
(
_6
){
case
"iq"
:
case
"presence"
:
case
"message"
:
case
"features"
:
this
[
_6
+
"Handler"
](
_5
);
break
;
default
:
if
(
_5
.
getAttribute
(
"xmlns"
)
==
dojox
.
xmpp
.
xmpp
.
SASL_NS
){
this
.
saslHandler
(
_5
);
}
}
},
messageHandler
:
function
(
_8
){
switch
(
_8
.
getAttribute
(
"type"
)){
case
"chat"
:
this
.
chatHandler
(
_8
);
break
;
case
"normal"
:
default
:
this
.
simpleMessageHandler
(
_8
);
}
},
iqHandler
:
function
(
_9
){
if
(
_9
.
getAttribute
(
"type"
)
==
"set"
){
this
.
iqSetHandler
(
_9
);
return
;
}
else
{
if
(
_9
.
getAttribute
(
"type"
)
==
"get"
){
return
;
}
}
},
presenceHandler
:
function
(
_a
){
switch
(
_a
.
getAttribute
(
"type"
)){
case
"subscribe"
:
this
.
presenceSubscriptionRequest
(
_a
.
getAttribute
(
"from"
));
break
;
case
"subscribed"
:
case
"unsubscribed"
:
break
;
case
"error"
:
this
.
processXmppError
(
_a
);
break
;
default
:
this
.
presenceUpdate
(
_a
);
break
;
}
},
featuresHandler
:
function
(
_b
){
var
_c
=
[];
var
_d
=
false
;
var
_e
=
false
;
if
(
_b
.
hasChildNodes
()){
for
(
var
i
=
0
;
i
<
_b
.
childNodes
.
length
;
i
++
){
var
n
=
_b
.
childNodes
[
i
];
switch
(
n
.
nodeName
){
case
"mechanisms"
:
for
(
var
x
=
0
;
x
<
n
.
childNodes
.
length
;
x
++
){
_c
.
push
(
n
.
childNodes
[
x
].
firstChild
.
nodeValue
);
}
break
;
case
"bind"
:
_d
=
true
;
break
;
case
"session"
:
_e
=
true
;
}
}
}
if
(
this
.
state
==
dojox
.
xmpp
.
xmpp
.
CONNECTED
){
if
(
!
this
.
auth
){
for
(
var
i
=
0
;
i
<
_c
.
length
;
i
++
){
try
{
this
.
auth
=
dojox
.
xmpp
.
sasl
.
registry
.
match
(
_c
[
i
],
this
);
break
;
}
catch
(
e
){
console
.
warn
(
"No suitable auth mechanism found for: "
,
_c
[
i
]);
}
}
}
else
{
if
(
_d
){
this
.
bindResource
(
_e
);
}
}
}
},
saslHandler
:
function
(
_f
){
if
(
_f
.
nodeName
==
"success"
){
this
.
auth
.
onSuccess
();
return
;
}
if
(
_f
.
nodeName
==
"challenge"
){
this
.
auth
.
onChallenge
(
_f
);
return
;
}
if
(
_f
.
hasChildNodes
()){
this
.
onLoginFailure
(
_f
.
firstChild
.
nodeName
);
this
.
session
.
setState
(
"Terminate"
,
_f
.
firstChild
.
nodeName
);
}
},
sendRestart
:
function
(){
this
.
session
.
_sendRestart
();
},
chatHandler
:
function
(
msg
){
var
_10
=
{
from
:
msg
.
getAttribute
(
"from"
),
to
:
msg
.
getAttribute
(
"to"
)};
var
_11
=
null
;
for
(
var
i
=
0
;
i
<
msg
.
childNodes
.
length
;
i
++
){
var
n
=
msg
.
childNodes
[
i
];
if
(
n
.
hasChildNodes
()){
switch
(
n
.
nodeName
){
case
"thread"
:
_10
.
chatid
=
n
.
firstChild
.
nodeValue
;
break
;
case
"body"
:
if
(
!
n
.
getAttribute
(
"xmlns"
)
||
(
n
.
getAttribute
(
"xmlns"
)
==
""
)){
_10
.
body
=
n
.
firstChild
.
nodeValue
;
}
break
;
case
"subject"
:
_10
.
subject
=
n
.
firstChild
.
nodeValue
;
case
"html"
:
if
(
n
.
getAttribute
(
"xmlns"
)
==
dojox
.
xmpp
.
xmpp
.
XHTML_IM_NS
){
_10
.
xhtml
=
n
.
getElementsByTagName
(
"body"
)[
0
];
}
break
;
case
"x"
:
break
;
default
:
}
}
}
var
_12
=-
1
;
if
(
_10
.
chatid
){
for
(
var
i
=
0
;
i
<
this
.
chatRegister
.
length
;
i
++
){
var
ci
=
this
.
chatRegister
[
i
];
if
(
ci
&&
ci
.
chatid
==
_10
.
chatid
){
_12
=
i
;
break
;
}
}
}
else
{
for
(
var
i
=
0
;
i
<
this
.
chatRegister
.
length
;
i
++
){
var
ci
=
this
.
chatRegister
[
i
];
if
(
ci
){
if
(
ci
.
uid
==
this
.
getBareJid
(
_10
.
from
)){
_12
=
i
;
}
}
}
}
if
(
_12
>-
1
&&
_11
){
var
_13
=
this
.
chatRegister
[
_12
];
_13
.
setState
(
_11
);
if
(
_13
.
firstMessage
){
if
(
_11
==
dojox
.
xmpp
.
chat
.
ACTIVE_STATE
){
_13
.
useChatState
=
(
_11
!=
null
)
?
true
:
false
;
_13
.
firstMessage
=
false
;
}
}
}
if
((
!
_10
.
body
||
_10
.
body
==
""
)
&&!
_10
.
xhtml
){
return
;
}
if
(
_12
>-
1
){
var
_13
=
this
.
chatRegister
[
_12
];
_13
.
recieveMessage
(
_10
);
}
else
{
var
_14
=
new
dojox
.
xmpp
.
ChatService
();
_14
.
uid
=
this
.
getBareJid
(
_10
.
from
);
_14
.
chatid
=
_10
.
chatid
;
_14
.
firstMessage
=
true
;
if
(
!
_11
||
_11
!=
dojox
.
xmpp
.
chat
.
ACTIVE_STATE
){
this
.
useChatState
=
false
;
}
this
.
registerChatInstance
(
_14
,
_10
);
}
},
simpleMessageHandler
:
function
(
msg
){
},
registerChatInstance
:
function
(
_15
,
_16
){
_15
.
setSession
(
this
);
this
.
chatRegister
.
push
(
_15
);
this
.
onRegisterChatInstance
(
_15
,
_16
);
_15
.
recieveMessage
(
_16
,
true
);
},
iqSetHandler
:
function
(
msg
){
if
(
msg
.
hasChildNodes
()){
var
fn
=
msg
.
firstChild
;
switch
(
fn
.
nodeName
){
case
"query"
:
if
(
fn
.
getAttribute
(
"xmlns"
)
==
"jabber:iq:roster"
){
this
.
rosterSetHandler
(
fn
);
this
.
sendIqResult
(
msg
.
getAttribute
(
"id"
),
msg
.
getAttribute
(
"from"
));
}
break
;
default
:
break
;
}
}
},
sendIqResult
:
function
(
_17
,
to
){
var
req
=
{
id
:
_17
,
to
:
to
||
this
.
domain
,
type
:
"result"
,
from
:
this
.
jid
+
"/"
+
this
.
resource
};
this
.
dispatchPacket
(
dojox
.
xmpp
.
util
.
createElement
(
"iq"
,
req
,
true
));
},
rosterSetHandler
:
function
(
_18
){
for
(
var
i
=
0
;
i
<
_18
.
childNodes
.
length
;
i
++
){
var
n
=
_18
.
childNodes
[
i
];
if
(
n
.
nodeName
==
"item"
){
var
_19
=
false
;
var
_1a
=-
1
;
var
_1b
=
null
;
var
_1c
=
null
;
for
(
var
x
=
0
;
x
<
this
.
roster
.
length
;
x
++
){
var
r
=
this
.
roster
[
x
];
if
(
n
.
getAttribute
(
"jid"
)
==
r
.
jid
){
_19
=
true
;
if
(
n
.
getAttribute
(
"subscription"
)
==
"remove"
){
_1b
=
{
id
:
r
.
jid
,
name
:
r
.
name
,
groups
:
[]};
for
(
var
y
=
0
;
y
<
r
.
groups
.
length
;
y
++
){
_1b
.
groups
.
push
(
r
.
groups
[
y
]);
}
this
.
roster
.
splice
(
x
,
1
);
_1a
=
dojox
.
xmpp
.
roster
.
REMOVED
;
}
else
{
_1c
=
dojo
.
clone
(
r
);
var
_1d
=
n
.
getAttribute
(
"name"
);
if
(
_1d
){
this
.
roster
[
x
].
name
=
_1d
;
}
r
.
groups
=
[];
if
(
n
.
getAttribute
(
"subscription"
)){
r
.
status
=
n
.
getAttribute
(
"subscription"
);
}
r
.
substatus
=
dojox
.
xmpp
.
presence
.
SUBSCRIPTION_SUBSTATUS_NONE
;
if
(
n
.
getAttribute
(
"ask"
)
==
"subscribe"
){
r
.
substatus
=
dojox
.
xmpp
.
presence
.
SUBSCRIPTION_REQUEST_PENDING
;
}
for
(
var
y
=
0
;
y
<
n
.
childNodes
.
length
;
y
++
){
var
_1e
=
n
.
childNodes
[
y
];
if
((
_1e
.
nodeName
==
"group"
)
&&
(
_1e
.
hasChildNodes
())){
var
_1f
=
_1e
.
firstChild
.
nodeValue
;
r
.
groups
.
push
(
_1f
);
}
}
_1b
=
r
;
_1a
=
dojox
.
xmpp
.
roster
.
CHANGED
;
}
break
;
}
}
if
(
!
_19
&&
(
n
.
getAttribute
(
"subscription"
)
!=
"remove"
)){
r
=
this
.
createRosterEntry
(
n
);
_1b
=
r
;
_1a
=
dojox
.
xmpp
.
roster
.
ADDED
;
}
switch
(
_1a
){
case
dojox
.
xmpp
.
roster
.
ADDED
:
this
.
onRosterAdded
(
_1b
);
break
;
case
dojox
.
xmpp
.
roster
.
REMOVED
:
this
.
onRosterRemoved
(
_1b
);
break
;
case
dojox
.
xmpp
.
roster
.
CHANGED
:
this
.
onRosterChanged
(
_1b
,
_1c
);
break
;
}
}
}
},
presenceUpdate
:
function
(
msg
){
if
(
msg
.
getAttribute
(
"to"
)){
var
jid
=
this
.
getBareJid
(
msg
.
getAttribute
(
"to"
));
if
(
jid
!=
this
.
jid
){
return
;
}
}
var
_20
=
this
.
getResourceFromJid
(
msg
.
getAttribute
(
"from"
));
var
p
=
{
from
:
this
.
getBareJid
(
msg
.
getAttribute
(
"from"
)),
resource
:
_20
,
show
:
dojox
.
xmpp
.
presence
.
STATUS_ONLINE
,
priority
:
5
,
hasAvatar
:
false
};
if
(
msg
.
getAttribute
(
"type"
)
==
"unavailable"
){
p
.
show
=
dojox
.
xmpp
.
presence
.
STATUS_OFFLINE
;
}
for
(
var
i
=
0
;
i
<
msg
.
childNodes
.
length
;
i
++
){
var
n
=
msg
.
childNodes
[
i
];
if
(
n
.
hasChildNodes
()){
switch
(
n
.
nodeName
){
case
"status"
:
case
"show"
:
p
[
n
.
nodeName
]
=
n
.
firstChild
.
nodeValue
;
break
;
case
"status"
:
p
.
priority
=
parseInt
(
n
.
firstChild
.
nodeValue
);
break
;
case
"x"
:
if
(
n
.
firstChild
&&
n
.
firstChild
.
firstChild
&&
n
.
firstChild
.
firstChild
.
nodeValue
!=
""
){
p
.
avatarHash
=
n
.
firstChild
.
firstChild
.
nodeValue
;
p
.
hasAvatar
=
true
;
}
break
;
}
}
}
this
.
onPresenceUpdate
(
p
);
},
retrieveRoster
:
function
(){
var
_21
=
{
id
:
this
.
getNextIqId
(),
from
:
this
.
jid
+
"/"
+
this
.
resource
,
type
:
"get"
};
var
req
=
new
dojox
.
string
.
Builder
(
dojox
.
xmpp
.
util
.
createElement
(
"iq"
,
_21
,
false
));
req
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"query"
,{
xmlns
:
"jabber:iq:roster"
},
true
));
req
.
append
(
"</iq>"
);
var
def
=
this
.
dispatchPacket
(
req
,
"iq"
,
_21
.
id
);
def
.
addCallback
(
this
,
"onRetrieveRoster"
);
},
getRosterIndex
:
function
(
jid
){
if
(
jid
.
indexOf
(
"@"
)
==-
1
){
jid
+=
"@"
+
this
.
domain
;
}
for
(
var
i
=
0
;
i
<
this
.
roster
.
length
;
i
++
){
if
(
jid
==
this
.
roster
[
i
].
jid
){
return
i
;
}
}
return
-
1
;
},
createRosterEntry
:
function
(
_22
){
var
re
=
{
name
:
_22
.
getAttribute
(
"name"
),
jid
:
_22
.
getAttribute
(
"jid"
),
groups
:
[],
status
:
dojox
.
xmpp
.
presence
.
SUBSCRIPTION_NONE
,
substatus
:
dojox
.
xmpp
.
presence
.
SUBSCRIPTION_SUBSTATUS_NONE
};
if
(
!
re
.
name
){
re
.
name
=
re
.
id
;
}
for
(
var
i
=
0
;
i
<
_22
.
childNodes
.
length
;
i
++
){
var
n
=
_22
.
childNodes
[
i
];
if
(
n
.
nodeName
==
"group"
&&
n
.
hasChildNodes
()){
re
.
groups
.
push
(
n
.
firstChild
.
nodeValue
);
}
}
if
(
_22
.
getAttribute
(
"subscription"
)){
re
.
status
=
_22
.
getAttribute
(
"subscription"
);
}
if
(
_22
.
getAttribute
(
"ask"
)
==
"subscribe"
){
re
.
substatus
=
dojox
.
xmpp
.
presence
.
SUBSCRIPTION_REQUEST_PENDING
;
}
return
re
;
},
bindResource
:
function
(
_23
){
var
_24
=
{
id
:
this
.
getNextIqId
(),
type
:
"set"
};
var
_25
=
new
dojox
.
string
.
Builder
(
dojox
.
xmpp
.
util
.
createElement
(
"iq"
,
_24
,
false
));
_25
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"bind"
,{
xmlns
:
dojox
.
xmpp
.
xmpp
.
BIND_NS
},
false
));
if
(
this
.
resource
){
_25
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"resource"
));
_25
.
append
(
this
.
resource
);
_25
.
append
(
"</resource>"
);
}
_25
.
append
(
"</bind></iq>"
);
var
def
=
this
.
dispatchPacket
(
_25
,
"iq"
,
_24
.
id
);
def
.
addCallback
(
this
,
function
(
msg
){
this
.
onBindResource
(
msg
,
_23
);
return
msg
;
});
},
getNextIqId
:
function
(){
return
"im_"
+
this
.
_iqId
++
;
},
presenceSubscriptionRequest
:
function
(
msg
){
this
.
onSubscriptionRequest
(
msg
);
},
dispatchPacket
:
function
(
msg
,
_26
,
_27
){
if
(
this
.
state
!=
"Terminate"
){
return
this
.
session
.
dispatchPacket
(
msg
,
_26
,
_27
);
}
else
{
}
},
setState
:
function
(
_28
,
_29
){
if
(
this
.
state
!=
_28
){
if
(
this
[
"on"
+
_28
]){
this
[
"on"
+
_28
](
_28
,
this
.
state
,
_29
);
}
this
.
state
=
_28
;
}
},
search
:
function
(
_2a
,
_2b
,
_2c
){
var
req
=
{
id
:
this
.
getNextIqId
(),
"xml:lang"
:
this
.
lang
,
type
:
"set"
,
from
:
this
.
jid
+
"/"
+
this
.
resource
,
to
:
_2b
};
var
_2d
=
new
dojox
.
string
.
Builder
(
dojox
.
xmpp
.
util
.
createElement
(
"iq"
,
req
,
false
));
_2d
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"query"
,{
xmlns
:
"jabber:iq:search"
},
false
));
_2d
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
_2c
,{},
false
));
_2d
.
append
(
_2a
);
_2d
.
append
(
"</"
).
append
(
_2c
).
append
(
">"
);
_2d
.
append
(
"</query></iq>"
);
var
def
=
this
.
dispatchPacket
(
_2d
.
toString
,
"iq"
,
req
.
id
);
def
.
addCallback
(
this
,
"_onSearchResults"
);
},
_onSearchResults
:
function
(
msg
){
if
((
msg
.
getAttribute
(
"type"
)
==
"result"
)
&&
(
msg
.
hasChildNodes
())){
this
.
onSearchResults
([]);
}
},
onLogin
:
function
(){
this
.
retrieveRoster
();
},
onLoginFailure
:
function
(
msg
){
},
onBindResource
:
function
(
msg
,
_2e
){
if
(
msg
.
getAttribute
(
"type"
)
==
"result"
){
if
((
msg
.
hasChildNodes
())
&&
(
msg
.
firstChild
.
nodeName
==
"bind"
)){
var
_2f
=
msg
.
firstChild
;
if
((
_2f
.
hasChildNodes
())
&&
(
_2f
.
firstChild
.
nodeName
==
"jid"
)){
if
(
_2f
.
firstChild
.
hasChildNodes
()){
var
_30
=
_2f
.
firstChild
.
firstChild
.
nodeValue
;
this
.
jid
=
this
.
getBareJid
(
_30
);
this
.
resource
=
this
.
getResourceFromJid
(
_30
);
}
}
if
(
_2e
){
var
_31
=
{
id
:
this
.
getNextIqId
(),
type
:
"set"
};
var
_32
=
new
dojox
.
string
.
Builder
(
dojox
.
xmpp
.
util
.
createElement
(
"iq"
,
_31
,
false
));
_32
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"session"
,{
xmlns
:
dojox
.
xmpp
.
xmpp
.
SESSION_NS
},
true
));
_32
.
append
(
"</iq>"
);
var
def
=
this
.
dispatchPacket
(
_32
,
"iq"
,
_31
.
id
);
def
.
addCallback
(
this
,
"onBindSession"
);
return
;
}
}
else
{
}
this
.
onLogin
();
}
else
{
if
(
msg
.
getAttribute
(
"type"
)
==
"error"
){
var
err
=
this
.
processXmppError
(
msg
);
this
.
onLoginFailure
(
err
);
}
}
},
onBindSession
:
function
(
msg
){
if
(
msg
.
getAttribute
(
"type"
)
==
"error"
){
var
err
=
this
.
processXmppError
(
msg
);
this
.
onLoginFailure
(
err
);
}
else
{
this
.
onLogin
();
}
},
onSearchResults
:
function
(
_33
){
},
onRetrieveRoster
:
function
(
msg
){
if
((
msg
.
getAttribute
(
"type"
)
==
"result"
)
&&
msg
.
hasChildNodes
()){
var
_34
=
msg
.
getElementsByTagName
(
"query"
)[
0
];
if
(
_34
.
getAttribute
(
"xmlns"
)
==
"jabber:iq:roster"
){
for
(
var
i
=
0
;
i
<
_34
.
childNodes
.
length
;
i
++
){
if
(
_34
.
childNodes
[
i
].
nodeName
==
"item"
){
this
.
roster
[
i
]
=
this
.
createRosterEntry
(
_34
.
childNodes
[
i
]);
}
}
}
}
else
{
if
(
msg
.
getAttribute
(
"type"
)
==
"error"
){
}
}
this
.
setState
(
dojox
.
xmpp
.
xmpp
.
ACTIVE
);
this
.
onRosterUpdated
();
return
msg
;
},
onRosterUpdated
:
function
(){
},
onSubscriptionRequest
:
function
(
req
){
},
onPresenceUpdate
:
function
(
p
){
},
onTransportReady
:
function
(){
this
.
setState
(
dojox
.
xmpp
.
xmpp
.
CONNECTED
);
this
.
rosterService
=
new
dojox
.
xmpp
.
RosterService
(
this
);
this
.
presenceService
=
new
dojox
.
xmpp
.
PresenceService
(
this
);
this
.
userService
=
new
dojox
.
xmpp
.
UserService
(
this
);
},
onTransportTerminate
:
function
(
_35
,
_36
,
_37
){
this
.
setState
(
dojox
.
xmpp
.
xmpp
.
TERMINATE
,
_37
);
},
onConnected
:
function
(){
},
onTerminate
:
function
(
_38
,
_39
,
_3a
){
},
onActive
:
function
(){
},
onRegisterChatInstance
:
function
(
_3b
,
_3c
){
},
onRosterAdded
:
function
(
ri
){
},
onRosterRemoved
:
function
(
ri
){
},
onRosterChanged
:
function
(
ri
,
_3d
){
},
processXmppError
:
function
(
msg
){
var
err
=
{
stanzaType
:
msg
.
nodeName
,
id
:
msg
.
getAttribute
(
"id"
)};
for
(
var
i
=
0
;
i
<
msg
.
childNodes
.
length
;
i
++
){
var
n
=
msg
.
childNodes
[
i
];
switch
(
n
.
nodeName
){
case
"error"
:
err
.
errorType
=
n
.
getAttribute
(
"type"
);
for
(
var
x
=
0
;
x
<
n
.
childNodes
.
length
;
x
++
){
var
cn
=
n
.
childNodes
[
x
];
if
((
cn
.
nodeName
==
"text"
)
&&
(
cn
.
getAttribute
(
"xmlns"
)
==
dojox
.
xmpp
.
xmpp
.
STANZA_NS
)
&&
cn
.
hasChildNodes
()){
err
.
message
=
cn
.
firstChild
.
nodeValue
;
}
else
{
if
((
cn
.
getAttribute
(
"xmlns"
)
==
dojox
.
xmpp
.
xmpp
.
STANZA_NS
)
&&
(
!
cn
.
hasChildNodes
())){
err
.
condition
=
cn
.
nodeName
;
}
}
}
break
;
default
:
break
;
}
}
return
err
;
},
sendStanzaError
:
function
(
_3e
,
to
,
id
,
_3f
,
_40
,
_41
){
var
req
=
{
type
:
"error"
};
if
(
to
){
req
.
to
=
to
;
}
if
(
id
){
req
.
id
=
id
;
}
var
_42
=
new
dojox
.
string
.
Builder
(
dojox
.
xmpp
.
util
.
createElement
(
_3e
,
req
,
false
));
_42
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"error"
,{
type
:
_3f
},
false
));
_42
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"condition"
,{
xmlns
:
dojox
.
xmpp
.
xmpp
.
STANZA_NS
},
true
));
if
(
_41
){
var
_43
=
{
xmlns
:
dojox
.
xmpp
.
xmpp
.
STANZA_NS
,
"xml:lang"
:
this
.
lang
};
_42
.
append
(
dojox
.
xmpp
.
util
.
createElement
(
"text"
,
_43
,
false
));
_42
.
append
(
_41
).
append
(
"</text>"
);
}
_42
.
append
(
"</error></"
).
append
(
_3e
).
append
(
">"
);
this
.
dispatchPacket
(
_42
.
toString
());
},
getBareJid
:
function
(
jid
){
var
i
=
jid
.
indexOf
(
"/"
);
if
(
i
!=-
1
){
return
jid
.
substring
(
0
,
i
);
}
return
jid
;
},
getResourceFromJid
:
function
(
jid
){
var
i
=
jid
.
indexOf
(
"/"
);
if
(
i
!=-
1
){
return
jid
.
substring
((
i
+
1
),
jid
.
length
);
}
return
""
;
}});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 12:22 (1 d, 11 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26335
Default Alt Text
xmppSession.js (14 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment