]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/request/util.js.uncompressed.js
988eb67462eea10a910d303755b41a71883d4fbc
1 define("dojo/request/util", [
3 '../errors/RequestError',
4 '../errors/CancelError',
9 ], function(exports
, RequestError
, CancelError
, Deferred
, ioQuery
, array
, lang
){
10 exports
.deepCopy
= function deepCopy(target
, source
){
11 for(var name
in source
){
12 var tval
= target
[name
],
15 if(tval
&& typeof tval
=== 'object' && sval
&& typeof sval
=== 'object'){
16 exports
.deepCopy(tval
, sval
);
25 exports
.deepCreate
= function deepCreate(source
, properties
){
26 properties
= properties
|| {};
27 var target
= lang
.delegate(source
),
33 if(value
&& typeof value
=== 'object'){
34 target
[name
] = exports
.deepCreate(value
, properties
[name
]);
37 return exports
.deepCopy(target
, properties
);
40 var freeze
= Object
.freeze
|| function(obj
){ return obj
; };
41 function okHandler(response
){
42 return freeze(response
);
45 exports
.deferred
= function deferred(response
, cancel
, isValid
, isReady
, handleResponse
, last
){
46 var def
= new Deferred(function(reason
){
47 cancel
&& cancel(def
, response
);
49 if(!reason
|| !(reason
instanceof RequestError
) && !(reason
instanceof CancelError
)){
50 return new CancelError('Request canceled', response
);
55 def
.response
= response
;
56 def
.isValid
= isValid
;
57 def
.isReady
= isReady
;
58 def
.handleResponse
= handleResponse
;
60 function errHandler(error
){
61 error
.response
= response
;
64 var responsePromise
= def
.then(okHandler
).otherwise(errHandler
);
68 lang
.hitch(exports
.notify
, 'emit', 'load'),
69 lang
.hitch(exports
.notify
, 'emit', 'error')
73 var dataPromise
= responsePromise
.then(function(response
){
74 return response
.data
|| response
.text
;
77 var promise
= freeze(lang
.delegate(dataPromise
, {
78 response
: responsePromise
83 def
.then(function(response
){
84 last
.call(def
, response
);
86 last
.call(def
, response
, error
);
90 def
.promise
= promise
;
91 def
.then
= promise
.then
;
96 exports
.addCommonMethods
= function addCommonMethods(provider
, methods
){
97 array
.forEach(methods
||['GET', 'POST', 'PUT', 'DELETE'], function(method
){
98 provider
[(method
=== 'DELETE' ? 'DEL' : method
).toLowerCase()] = function(url
, options
){
99 options
= lang
.delegate(options
||{});
100 options
.method
= method
;
101 return provider(url
, options
);
106 exports
.parseArgs
= function parseArgs(url
, options
, skipData
){
107 var data
= options
.data
,
108 query
= options
.query
;
110 if(data
&& !skipData
){
111 if(typeof data
=== 'object'){
112 options
.data
= ioQuery
.objectToQuery(data
);
117 if(typeof query
=== 'object'){
118 query
= ioQuery
.objectToQuery(query
);
120 if(options
.preventCache
){
121 query
+= (query
? '&' : '') + 'request.preventCache=' + (+(new Date
));
123 }else if(options
.preventCache
){
124 query
= 'request.preventCache=' + (+(new Date
));
128 url
+= (~url
.indexOf('?') ? '&' : '?') + query
;
134 getHeader: function(headerName
){ return null; }
138 exports
.checkStatus = function(stat
){
140 return (stat
>= 200 && stat
< 300) || // allow any 2XX response code
141 stat
=== 304 || // or, get it out of the cache
142 stat
=== 1223 || // or, Internet Explorer mangled the status code
143 !stat
; // or, we're Titanium/browser chrome/chrome extension requesting a local file