]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dojo/request/handlers.js.uncompressed.js
upgrade dojo to 1.8.3 (refs #570)
[tt-rss.git] / lib / dojo / request / handlers.js.uncompressed.js
diff --git a/lib/dojo/request/handlers.js.uncompressed.js b/lib/dojo/request/handlers.js.uncompressed.js
new file mode 100644 (file)
index 0000000..7c0ed83
--- /dev/null
@@ -0,0 +1,62 @@
+define("dojo/request/handlers", [
+       '../json',
+       '../_base/kernel',
+       '../_base/array',
+       '../has'
+], function(JSON, kernel, array, has){
+       has.add('activex', typeof ActiveXObject !== 'undefined');
+
+       var handleXML;
+       if(has('activex')){
+               // GUIDs obtained from http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx
+               var dp = [
+                       'Msxml2.DOMDocument.6.0',
+                       'Msxml2.DOMDocument.4.0',
+                       'MSXML2.DOMDocument.3.0',
+                       'MSXML.DOMDocument' // 2.0
+               ];
+
+               handleXML = function(response){
+                       var result = response.data;
+
+                       if(!result || !result.documentElement){
+                               var text = response.text;
+                               array.some(dp, function(p){
+                                       try{
+                                               var dom = new ActiveXObject(p);
+                                               dom.async = false;
+                                               dom.loadXML(text);
+                                               result = dom;
+                                       }catch(e){ return false; }
+                                       return true;
+                               });
+                       }
+
+                       return result;
+               };
+       }
+
+       var handlers = {
+               'javascript': function(response){
+                       return kernel.eval(response.text || '');
+               },
+               'json': function(response){
+                       return JSON.parse(response.text || null);
+               },
+               'xml': handleXML
+       };
+
+       function handle(response){
+               var handler = handlers[response.options.handleAs];
+
+               response.data = handler ? handler(response) : (response.data || response.text);
+
+               return response;
+       }
+
+       handle.register = function(name, handler){
+               handlers[name] = handler;
+       };
+
+       return handle;
+});