You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.3 KiB
114 lines
2.3 KiB
/* |
|
Copyright (c) 2004-2006, The Dojo Foundation |
|
All Rights Reserved. |
|
|
|
Licensed under the Academic Free License version 2.1 or above OR the |
|
modified BSD license. For more information on Dojo licensing, see: |
|
|
|
http://dojotoolkit.org/community/licensing.shtml |
|
*/ |
|
|
|
|
|
dojo.provide("dojo.io.RhinoIO"); |
|
dojo.require("dojo.io.common"); |
|
dojo.require("dojo.lang.func"); |
|
dojo.require("dojo.lang.array"); |
|
dojo.require("dojo.string.extras"); |
|
dojo.io.RhinoHTTPTransport=new function(){ |
|
this.canHandle=function(_1){ |
|
if(dojo.lang.find(["text/plain","text/html","text/xml","text/javascript","text/json","application/json"],(_1.mimetype.toLowerCase()||""))<0){ |
|
return false; |
|
} |
|
if(_1.url.substr(0,7)!="http://"){ |
|
return false; |
|
} |
|
return true; |
|
}; |
|
function doLoad(_2,_3){ |
|
var _4; |
|
if(_2.method.toLowerCase()=="head"){ |
|
}else{ |
|
var _5=_3.getContent(); |
|
var _6=new java.io.BufferedReader(new java.io.InputStreamReader(_5)); |
|
var _7=""; |
|
var _8=null; |
|
while((_8=_6.readLine())!=null){ |
|
_7+=_8; |
|
} |
|
if(_2.mimetype=="text/javascript"){ |
|
try{ |
|
_4=dj_eval(_7); |
|
} |
|
catch(e){ |
|
dojo.debug(e); |
|
dojo.debug(_7); |
|
_4=null; |
|
} |
|
}else{ |
|
if(_2.mimetype=="text/json"||_2.mimetype=="application/json"){ |
|
try{ |
|
_4=dj_eval("("+_7+")"); |
|
} |
|
catch(e){ |
|
dojo.debug(e); |
|
dojo.debug(_7); |
|
_4=false; |
|
} |
|
}else{ |
|
_4=_7; |
|
} |
|
} |
|
} |
|
_2.load("load",_4,_2); |
|
} |
|
function connect(_9){ |
|
var _a=_9.content||{}; |
|
var _b; |
|
if(_9.sendTransport){ |
|
_a["dojo.transport"]="rhinohttp"; |
|
} |
|
if(_9.postContent){ |
|
_b=_9.postContent; |
|
}else{ |
|
_b=dojo.io.argsFromMap(_a,_9.encoding); |
|
} |
|
var _c=_9.url; |
|
if(_9.method.toLowerCase()=="get"&&_b!=""){ |
|
_c=_c+"?"+_b; |
|
} |
|
var _d=new java.net.URL(_c); |
|
var _e=_d.openConnection(); |
|
_e.setRequestMethod(_9.method.toUpperCase()); |
|
if(_9.headers){ |
|
for(var _f in _9.headers){ |
|
if(_f.toLowerCase()=="content-type"&&!_9.contentType){ |
|
_9.contentType=_9.headers[_f]; |
|
}else{ |
|
_e.setRequestProperty(_f,_9.headers[_f]); |
|
} |
|
} |
|
} |
|
if(_9.contentType){ |
|
_e.setRequestProperty("Content-Type",_9.contentType); |
|
} |
|
if(_9.method.toLowerCase()=="post"){ |
|
_e.setDoOutput(true); |
|
var _10=_e.getOutputStream(); |
|
var _11=(new java.lang.String(_b)).getBytes(); |
|
_10.write(_11,0,_11.length); |
|
} |
|
_e.connect(); |
|
doLoad(_9,_e); |
|
} |
|
this.bind=function(req){ |
|
var _13=req["sync"]?false:true; |
|
if(_13){ |
|
setTimeout(dojo.lang.hitch(this,function(){ |
|
connect(req); |
|
}),1); |
|
}else{ |
|
connect(req); |
|
} |
|
}; |
|
dojo.io.transports.addTransport("RhinoHTTPTransport"); |
|
};
|
|
|