62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
//>>built
|
|
define("dojox/io/xhrWindowNamePlugin", [
|
|
"dojo/_base/kernel",
|
|
"dojo/_base/json",
|
|
"dojo/_base/xhr",
|
|
"dojox/io/xhrPlugins",
|
|
"dojox/io/windowName",
|
|
"dojox/io/httpParse",
|
|
"dojox/secure/capability"
|
|
], function(dojo, json, xhr, xhrPlugins, windowName, httpParse, capability){
|
|
dojo.getObject("io.xhrWindowNamePlugin", true, dojox);
|
|
|
|
dojox.io.xhrWindowNamePlugin = function(/*String*/url, /*Function?*/httpAdapter, /*Boolean?*/trusted){
|
|
// summary:
|
|
// Adds the windowName transport as an XHR plugin for the given site. See
|
|
// dojox.io.windowName for more information on the transport.
|
|
// url:
|
|
// Url prefix of the site which can handle windowName requests.
|
|
// httpAdapter: This allows for adapting HTTP requests that could not otherwise be
|
|
// sent with window.name, so you can use a convention for headers and PUT/DELETE methods.
|
|
xhrPlugins.register(
|
|
"windowName",
|
|
function(method,args){
|
|
return args.sync !== true &&
|
|
(method == "GET" || method == "POST" || httpAdapter) &&
|
|
(args.url.substring(0,url.length) == url);
|
|
},
|
|
function(method,args,hasBody){
|
|
var send = windowName.send;
|
|
var load = args.load;
|
|
args.load = undefined; //we don't want send to set this callback
|
|
var dfd = (httpAdapter ? httpAdapter(send, true) : send)(method, args, hasBody); // use the windowName transport
|
|
dfd.addCallback(function(result){
|
|
var ioArgs = dfd.ioArgs;
|
|
ioArgs.xhr = {
|
|
getResponseHeader: function(name){
|
|
// convert the hash to an object to act like response headers
|
|
return dojo.queryToObject(ioArgs.hash.match(/[^#]*$/)[0])[name];
|
|
}
|
|
}
|
|
// use the XHR content handlers for handling
|
|
if(ioArgs.handleAs == 'json'){
|
|
// use a secure json verifier, using object capability validator for now
|
|
if(!trusted){
|
|
capability.validate(result,["Date"],{});
|
|
}
|
|
return dojo.fromJson(result);
|
|
}
|
|
return dojo._contentHandlers[ioArgs.handleAs || "text"]({responseText:result});
|
|
});
|
|
args.load = load;
|
|
if(load){
|
|
dfd.addCallback(load);
|
|
}
|
|
return dfd;
|
|
}
|
|
);
|
|
};
|
|
|
|
return dojox.io.xhrWindowNamePlugin;
|
|
});
|