diff options
Diffstat (limited to 'js/dojo/dojox/io/xhrWindowNamePlugin.js')
| -rw-r--r-- | js/dojo/dojox/io/xhrWindowNamePlugin.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/js/dojo/dojox/io/xhrWindowNamePlugin.js b/js/dojo/dojox/io/xhrWindowNamePlugin.js new file mode 100644 index 0000000..729f36e --- /dev/null +++ b/js/dojo/dojox/io/xhrWindowNamePlugin.js @@ -0,0 +1,61 @@ +//>>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; +}); |
