123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.io.xhrWindowNamePlugin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.io.xhrWindowNamePlugin"] = true;
- dojo.provide("dojox.io.xhrWindowNamePlugin");
- dojo.require("dojox.io.xhrPlugins");
- dojo.require("dojox.io.windowName");
- dojo.require("dojox.io.httpParse");
- dojo.require("dojox.secure.capability"); // would like to have a safe JSON verifier instead (more compact)
- 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.
- dojox.io.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 = dojox.io.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){
- dojox.secure.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;
- }
- );
- };
- }
|