xhrPlugins.js 2.02 KB
//>>built
define(["dojo/_base/kernel","dojo/_base/xhr","dojo/AdapterRegistry"],function(a,m,n){function e(){return k=dojox.io.xhrPlugins.plainXhr=k||a._defaultXhr||m}a.getObject("io.xhrPlugins",!0,dojox);var d,k;dojox.io.xhrPlugins.register=function(){var g=e();d||(d=new n,a[a._defaultXhr?"_defaultXhr":"xhr"]=function(a,c,b){return d.match.apply(d,arguments)},d.register("xhr",function(a,c){if(!c.url.match(/^\w*:\/\//))return!0;a=window.location.href.match(/^.*?\/\/.*?\//)[0];return c.url.substring(0,a.length)==
a},g));return d.register.apply(d,arguments)};dojox.io.xhrPlugins.addProxy=function(g){var h=e();dojox.io.xhrPlugins.register("proxy",function(a,b){return!0},function(c,b,p){b.url=g+encodeURIComponent(b.url);return h.call(a,c,b,p)})};var f;dojox.io.xhrPlugins.addCrossSiteXhr=function(g,h){var c=e();if(void 0===f&&window.XMLHttpRequest)try{(new XMLHttpRequest).open("GET","http://testing-cross-domain-capability.com",!0),f=!0,a.config.noRequestedWithHeaders=!0}catch(b){f=!1}dojox.io.xhrPlugins.register("cs-xhr",
function(b,a){return(f||window.XDomainRequest&&!0!==a.sync&&("GET"==b||"POST"==b||h))&&a.url.substring(0,g.length)==g},f?c:function(){var b=a._xhrObj;a._xhrObj=function(){function b(b,c){return function(){a.readyState=c;a.status=b}}var a=new XDomainRequest;a.readyState=1;a.setRequestHeader=function(){};a.getResponseHeader=function(b){return"Content-Type"==b?a.contentType:null};a.onload=b(200,4);a.onprogress=b(200,3);a.onerror=b(404,4);return a};var c=(h?h(e()):e()).apply(a,arguments);a._xhrObj=b;
return c})};dojox.io.xhrPlugins.fullHttpAdapter=function(g,h){return function(c,b,d){var e={},f={};"GET"!=c&&(f["http-method"]=c,b.putData&&h&&(e["http-content"]=b.putData,delete b.putData,d=!1),b.postData&&h&&(e["http-content"]=b.postData,delete b.postData,d=!1),c="POST");for(var l in b.headers){var k=l.match(/^X-/)?l.substring(2).replace(/-/g,"_").toLowerCase():"http-"+l;f[k]=b.headers[l]}b.query=a.objectToQuery(f);a._ioAddQueryToUrl(b);b.content=a.mixin(b.content||{},e);return g.call(a,c,b,d)}};
return dojox.io.xhrPlugins});