]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/request/util.js.uncompressed.js
modify dojo rebuild script to remove uncompressed files
[tt-rss.git] / lib / dojo / request / util.js.uncompressed.js
1 define("dojo/request/util", [
2 'exports',
3 '../errors/RequestError',
4 '../errors/CancelError',
5 '../Deferred',
6 '../io-query',
7 '../_base/array',
8 '../_base/lang'
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],
13 sval = source[name];
14 if(tval !== sval){
15 if(tval && typeof tval === 'object' && sval && typeof sval === 'object'){
16 exports.deepCopy(tval, sval);
17 }else{
18 target[name] = sval;
19 }
20 }
21 }
22 return target;
23 };
24
25 exports.deepCreate = function deepCreate(source, properties){
26 properties = properties || {};
27 var target = lang.delegate(source),
28 name, value;
29
30 for(name in source){
31 value = source[name];
32
33 if(value && typeof value === 'object'){
34 target[name] = exports.deepCreate(value, properties[name]);
35 }
36 }
37 return exports.deepCopy(target, properties);
38 };
39
40 var freeze = Object.freeze || function(obj){ return obj; };
41 function okHandler(response){
42 return freeze(response);
43 }
44
45 exports.deferred = function deferred(response, cancel, isValid, isReady, handleResponse, last){
46 var def = new Deferred(function(reason){
47 cancel && cancel(def, response);
48
49 if(!reason || !(reason instanceof RequestError) && !(reason instanceof CancelError)){
50 return new CancelError('Request canceled', response);
51 }
52 return reason;
53 });
54
55 def.response = response;
56 def.isValid = isValid;
57 def.isReady = isReady;
58 def.handleResponse = handleResponse;
59
60 function errHandler(error){
61 error.response = response;
62 throw error;
63 }
64 var responsePromise = def.then(okHandler).otherwise(errHandler);
65
66 if(exports.notify){
67 responsePromise.then(
68 lang.hitch(exports.notify, 'emit', 'load'),
69 lang.hitch(exports.notify, 'emit', 'error')
70 );
71 }
72
73 var dataPromise = responsePromise.then(function(response){
74 return response.data || response.text;
75 });
76
77 var promise = freeze(lang.delegate(dataPromise, {
78 response: responsePromise
79 }));
80
81
82 if(last){
83 def.then(function(response){
84 last.call(def, response);
85 }, function(error){
86 last.call(def, response, error);
87 });
88 }
89
90 def.promise = promise;
91 def.then = promise.then;
92
93 return def;
94 };
95
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);
102 };
103 });
104 };
105
106 exports.parseArgs = function parseArgs(url, options, skipData){
107 var data = options.data,
108 query = options.query;
109
110 if(data && !skipData){
111 if(typeof data === 'object'){
112 options.data = ioQuery.objectToQuery(data);
113 }
114 }
115
116 if(query){
117 if(typeof query === 'object'){
118 query = ioQuery.objectToQuery(query);
119 }
120 if(options.preventCache){
121 query += (query ? '&' : '') + 'request.preventCache=' + (+(new Date));
122 }
123 }else if(options.preventCache){
124 query = 'request.preventCache=' + (+(new Date));
125 }
126
127 if(url && query){
128 url += (~url.indexOf('?') ? '&' : '?') + query;
129 }
130
131 return {
132 url: url,
133 options: options,
134 getHeader: function(headerName){ return null; }
135 };
136 };
137
138 exports.checkStatus = function(stat){
139 stat = stat || 0;
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
144 };
145 });