Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F886579
RestChannels.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Subscribers
None
RestChannels.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.cometd.RestChannels"
]){
dojo
.
_hasResource
[
"dojox.cometd.RestChannels"
]
=
true
;
dojo
.
provide
(
"dojox.cometd.RestChannels"
);
dojo
.
require
(
"dojox.rpc.Client"
);
dojo
.
requireIf
(
dojox
.
data
&&!!
dojox
.
data
.
JsonRestStore
,
"dojox.data.restListener"
);
(
function
(){
dojo
.
declare
(
"dojox.cometd.RestChannels"
,
null
,{
constructor
:
function
(
_1
){
dojo
.
mixin
(
this
,
_1
);
if
(
dojox
.
rpc
.
Rest
&&
this
.
autoSubscribeRoot
){
var
_2
=
dojox
.
rpc
.
Rest
.
_get
;
var
_3
=
this
;
dojox
.
rpc
.
Rest
.
_get
=
function
(
_4
,
id
){
var
_5
=
dojo
.
xhrGet
;
dojo
.
xhrGet
=
function
(
r
){
var
_6
=
_3
.
autoSubscribeRoot
;
return
(
_6
&&
r
.
url
.
substring
(
0
,
_6
.
length
)
==
_6
)
?
_3
.
get
(
r
.
url
,
r
)
:
_5
(
r
);
};
var
_7
=
_2
.
apply
(
this
,
arguments
);
dojo
.
xhrGet
=
_5
;
return
_7
;
};
}
},
absoluteUrl
:
function
(
_8
,
_9
){
return
new
dojo
.
_Url
(
_8
,
_9
)
+
""
;
},
acceptType
:
"application/rest+json,application/http;q=0.9,*/*;q=0.7"
,
subscriptions
:
{},
subCallbacks
:
{},
autoReconnectTime
:
3000
,
reloadDataOnReconnect
:
true
,
sendAsJson
:
false
,
url
:
"/channels"
,
autoSubscribeRoot
:
"/"
,
open
:
function
(){
this
.
started
=
true
;
if
(
!
this
.
connected
){
this
.
connectionId
=
dojox
.
rpc
.
Client
.
clientId
;
var
_a
=
this
.
createdClientId
?
"Client-Id"
:
"Create-Client-Id"
;
this
.
createdClientId
=
true
;
var
_b
=
{
Accept
:
this
.
acceptType
};
_b
[
_a
]
=
this
.
connectionId
;
var
_c
=
dojo
.
xhrPost
({
headers
:
_b
,
url
:
this
.
url
,
noStatus
:
true
});
var
_d
=
this
;
this
.
lastIndex
=
0
;
var
_e
,
_f
=
function
(
_10
){
if
(
typeof
dojo
==
"undefined"
){
return
null
;
}
if
(
xhr
&&
xhr
.
status
>
400
){
return
_e
(
true
);
}
if
(
typeof
_10
==
"string"
){
_10
=
_10
.
substring
(
_d
.
lastIndex
);
}
var
_11
=
xhr
&&
(
xhr
.
contentType
||
xhr
.
getResponseHeader
(
"Content-Type"
))
||
(
typeof
_10
!=
"string"
&&
"already json"
);
var
_12
=
_d
.
onprogress
(
xhr
,
_10
,
_11
);
if
(
_12
){
if
(
_e
()){
return
new
Error
(
_12
);
}
}
if
(
!
xhr
||
xhr
.
readyState
==
4
){
xhr
=
null
;
if
(
_d
.
connected
){
_d
.
connected
=
false
;
_d
.
open
();
}
}
return
_10
;
};
_e
=
function
(
_13
){
if
(
xhr
&&
xhr
.
status
==
409
){
_d
.
disconnected
();
return
null
;
}
_d
.
createdClientId
=
false
;
_d
.
disconnected
();
return
_13
;
};
_c
.
addCallbacks
(
_f
,
_e
);
var
xhr
=
_c
.
ioArgs
.
xhr
;
if
(
xhr
){
xhr
.
onreadystatechange
=
function
(){
var
_14
;
try
{
if
(
xhr
.
readyState
==
3
){
_d
.
readyState
=
3
;
_14
=
xhr
.
responseText
;
}
}
catch
(
e
){
}
if
(
typeof
_14
==
"string"
){
_f
(
_14
);
}
};
}
if
(
window
.
attachEvent
){
window
.
attachEvent
(
"onunload"
,
function
(){
_d
.
connected
=
false
;
if
(
xhr
){
xhr
.
abort
();
}
});
}
this
.
connected
=
true
;
}
},
_send
:
function
(
_15
,
_16
,
_17
){
if
(
this
.
sendAsJson
){
_16
.
postData
=
dojo
.
toJson
({
target
:
_16
.
url
,
method
:
_15
,
content
:
_17
,
params
:
_16
.
content
,
subscribe
:
_16
.
headers
[
"Subscribe"
]});
_16
.
url
=
this
.
url
;
_15
=
"POST"
;
}
else
{
_16
.
postData
=
dojo
.
toJson
(
_17
);
}
return
dojo
.
xhr
(
_15
,
_16
,
_16
.
postData
);
},
subscribe
:
function
(
_18
,
_19
){
_19
=
_19
||
{};
_19
.
url
=
this
.
absoluteUrl
(
this
.
url
,
_18
);
if
(
_19
.
headers
){
delete
_19
.
headers
.
Range
;
}
var
_1a
=
this
.
subscriptions
[
_18
];
var
_1b
=
_19
.
method
||
"HEAD"
;
var
_1c
=
_19
.
since
;
var
_1d
=
_19
.
callback
;
var
_1e
=
_19
.
headers
||
(
_19
.
headers
=
{});
this
.
subscriptions
[
_18
]
=
_1c
||
_1a
||
0
;
var
_1f
=
this
.
subCallbacks
[
_18
];
if
(
_1d
){
this
.
subCallbacks
[
_18
]
=
_1f
?
function
(
m
){
_1f
(
m
);
_1d
(
m
);
}
:
_1d
;
}
if
(
!
this
.
connected
){
this
.
open
();
}
if
(
_1a
===
undefined
||
_1a
!=
_1c
){
_1e
[
"Cache-Control"
]
=
"max-age=0"
;
_1c
=
typeof
_1c
==
"number"
?
new
Date
(
_1c
).
toUTCString
()
:
_1c
;
if
(
_1c
){
_1e
[
"Subscribe-Since"
]
=
_1c
;
}
_1e
[
"Subscribe"
]
=
_19
.
unsubscribe
?
"none"
:
"*"
;
var
dfd
=
this
.
_send
(
_1b
,
_19
);
var
_20
=
this
;
dfd
.
addBoth
(
function
(
_21
){
var
xhr
=
dfd
.
ioArgs
.
xhr
;
if
(
!
(
_21
instanceof
Error
)){
if
(
_19
.
confirmation
){
_19
.
confirmation
();
}
}
if
(
xhr
&&
xhr
.
getResponseHeader
(
"Subscribed"
)
==
"OK"
){
var
_22
=
xhr
.
getResponseHeader
(
"Last-Modified"
);
if
(
xhr
.
responseText
){
_20
.
subscriptions
[
_18
]
=
_22
||
new
Date
().
toUTCString
();
}
else
{
return
null
;
}
}
else
{
if
(
xhr
&&!
(
_21
instanceof
Error
)){
delete
_20
.
subscriptions
[
_18
];
}
}
if
(
!
(
_21
instanceof
Error
)){
var
_23
=
{
responseText
:
xhr
&&
xhr
.
responseText
,
channel
:
_18
,
getResponseHeader
:
function
(
_24
){
return
xhr
.
getResponseHeader
(
_24
);
},
getAllResponseHeaders
:
function
(){
return
xhr
.
getAllResponseHeaders
();
},
result
:
_21
};
if
(
_20
.
subCallbacks
[
_18
]){
_20
.
subCallbacks
[
_18
](
_23
);
}
}
else
{
if
(
_20
.
subCallbacks
[
_18
]){
_20
.
subCallbacks
[
_18
](
xhr
);
}
}
return
_21
;
});
return
dfd
;
}
return
null
;
},
publish
:
function
(
_25
,
_26
){
return
this
.
_send
(
"POST"
,{
url
:
_25
,
contentType
:
"application/json"
},
_26
);
},
_processMessage
:
function
(
_27
){
_27
.
event
=
_27
.
event
||
_27
.
getResponseHeader
(
"Event"
);
if
(
_27
.
event
==
"connection-conflict"
){
return
"conflict"
;
}
try
{
_27
.
result
=
_27
.
result
||
dojo
.
fromJson
(
_27
.
responseText
);
}
catch
(
e
){
}
var
_28
=
this
;
var
loc
=
_27
.
channel
=
new
dojo
.
_Url
(
this
.
url
,
_27
.
source
||
_27
.
getResponseHeader
(
"Content-Location"
))
+
""
;
if
(
loc
in
this
.
subscriptions
&&
_27
.
getResponseHeader
){
this
.
subscriptions
[
loc
]
=
_27
.
getResponseHeader
(
"Last-Modified"
);
}
if
(
this
.
subCallbacks
[
loc
]){
setTimeout
(
function
(){
_28
.
subCallbacks
[
loc
](
_27
);
},
0
);
}
this
.
receive
(
_27
);
return
null
;
},
onprogress
:
function
(
xhr
,
_29
,
_2a
){
if
(
!
_2a
||
_2a
.
match
(
/application\/rest\+json/
)){
var
_2b
=
_29
.
length
;
_29
=
_29
.
replace
(
/^\s*[,\[]?/
,
"["
).
replace
(
/[,\]]?\s*$/
,
"]"
);
try
{
var
_2c
=
dojo
.
fromJson
(
_29
);
this
.
lastIndex
+=
_2b
;
}
catch
(
e
){
}
}
else
{
if
(
dojox
.
io
&&
dojox
.
io
.
httpParse
&&
_2a
.
match
(
/application\/http/
)){
var
_2d
=
""
;
if
(
xhr
&&
xhr
.
getAllResponseHeaders
){
_2d
=
xhr
.
getAllResponseHeaders
();
}
_2c
=
dojox
.
io
.
httpParse
(
_29
,
_2d
,
xhr
.
readyState
!=
4
);
}
else
{
if
(
typeof
_29
==
"object"
){
_2c
=
_29
;
}
}
}
if
(
_2c
){
for
(
var
i
=
0
;
i
<
_2c
.
length
;
i
++
){
if
(
this
.
_processMessage
(
_2c
[
i
])){
return
"conflict"
;
}
}
return
null
;
}
if
(
!
xhr
){
return
"error"
;
}
if
(
xhr
.
readyState
!=
4
){
return
null
;
}
if
(
xhr
.
__proto__
){
xhr
=
{
channel
:
"channel"
,
__proto__
:
xhr
};
}
return
this
.
_processMessage
(
xhr
);
},
get
:
function
(
_2e
,
_2f
){
(
_2f
=
_2f
||
{}).
method
=
"GET"
;
return
this
.
subscribe
(
_2e
,
_2f
);
},
receive
:
function
(
_30
){
if
(
dojox
.
data
&&
dojox
.
data
.
restListener
){
dojox
.
data
.
restListener
(
_30
);
}
},
disconnected
:
function
(){
var
_31
=
this
;
if
(
this
.
connected
){
this
.
connected
=
false
;
if
(
this
.
started
){
setTimeout
(
function
(){
var
_32
=
_31
.
subscriptions
;
_31
.
subscriptions
=
{};
for
(
var
i
in
_32
){
if
(
_31
.
reloadDataOnReconnect
&&
dojox
.
rpc
.
JsonRest
){
delete
dojox
.
rpc
.
Rest
.
_index
[
i
];
dojox
.
rpc
.
JsonRest
.
fetch
(
i
);
}
else
{
_31
.
subscribe
(
i
,{
since
:
_32
[
i
]});
}
}
_31
.
open
();
},
this
.
autoReconnectTime
);
}
}
},
unsubscribe
:
function
(
_33
,
_34
){
_34
=
_34
||
{};
_34
.
unsubscribe
=
true
;
this
.
subscribe
(
_33
,
_34
);
},
disconnect
:
function
(){
this
.
started
=
false
;
this
.
xhr
.
abort
();
}});
var
_35
=
dojox
.
cometd
.
RestChannels
.
defaultInstance
=
new
dojox
.
cometd
.
RestChannels
();
if
(
dojox
.
cometd
.
connectionTypes
){
_35
.
startup
=
function
(
_36
){
_35
.
open
();
this
.
_cometd
.
_deliver
({
channel
:
"/meta/connect"
,
successful
:
true
});
};
_35
.
check
=
function
(
_37
,
_38
,
_39
){
for
(
var
i
=
0
;
i
<
_37
.
length
;
i
++
){
if
(
_37
[
i
]
==
"rest-channels"
){
return
!
_39
;
}
}
return
false
;
};
_35
.
deliver
=
function
(
_3a
){
};
dojo
.
connect
(
this
,
"receive"
,
null
,
function
(
_3b
){
_3b
.
data
=
_3b
.
result
;
this
.
_cometd
.
_deliver
(
_3b
);
});
_35
.
sendMessages
=
function
(
_3c
){
for
(
var
i
=
0
;
i
<
_3c
.
length
;
i
++
){
var
_3d
=
_3c
[
i
];
var
_3e
=
_3d
.
channel
;
var
_3f
=
this
.
_cometd
;
var
_40
=
{
confirmation
:
function
(){
_3f
.
_deliver
({
channel
:
_3e
,
successful
:
true
});
}};
if
(
_3e
==
"/meta/subscribe"
){
this
.
subscribe
(
_3d
.
subscription
,
_40
);
}
else
{
if
(
_3e
==
"/meta/unsubscribe"
){
this
.
unsubscribe
(
_3d
.
subscription
,
_40
);
}
else
{
if
(
_3e
==
"/meta/connect"
){
_40
.
confirmation
();
}
else
{
if
(
_3e
==
"/meta/disconnect"
){
_35
.
disconnect
();
_40
.
confirmation
();
}
else
{
if
(
_3e
.
substring
(
0
,
6
)
!=
"/meta/"
){
this
.
publish
(
_3e
,
_3d
.
data
);
}
}
}
}
}
}
};
dojox
.
cometd
.
connectionTypes
.
register
(
"rest-channels"
,
_35
.
check
,
_35
,
false
,
true
);
}
})();
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 7, 02:41 (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24986
Default Alt Text
RestChannels.js (7 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment