mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-13 19:55:55 +00:00
add dijit/dojo stuff; initial ui mockup
This commit is contained in:
89
lib/dojo/rpc/RpcService.js
Normal file
89
lib/dojo/rpc/RpcService.js
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
Copyright (c) 2004-2010, 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["dojo.rpc.RpcService"]){
|
||||
dojo._hasResource["dojo.rpc.RpcService"]=true;
|
||||
dojo.provide("dojo.rpc.RpcService");
|
||||
dojo.declare("dojo.rpc.RpcService",null,{constructor:function(_1){
|
||||
if(_1){
|
||||
if((dojo.isString(_1))||(_1 instanceof dojo._Url)){
|
||||
if(_1 instanceof dojo._Url){
|
||||
var _2=_1+"";
|
||||
}else{
|
||||
_2=_1;
|
||||
}
|
||||
var _3=dojo.xhrGet({url:_2,handleAs:"json-comment-optional",sync:true});
|
||||
_3.addCallback(this,"processSmd");
|
||||
_3.addErrback(function(){
|
||||
throw new Error("Unable to load SMD from "+_1);
|
||||
});
|
||||
}else{
|
||||
if(_1.smdStr){
|
||||
this.processSmd(dojo.eval("("+_1.smdStr+")"));
|
||||
}else{
|
||||
if(_1.serviceUrl){
|
||||
this.serviceUrl=_1.serviceUrl;
|
||||
}
|
||||
this.timeout=_1.timeout||3000;
|
||||
if("strictArgChecks" in _1){
|
||||
this.strictArgChecks=_1.strictArgChecks;
|
||||
}
|
||||
this.processSmd(_1);
|
||||
}
|
||||
}
|
||||
}
|
||||
},strictArgChecks:true,serviceUrl:"",parseResults:function(_4){
|
||||
return _4;
|
||||
},errorCallback:function(_5){
|
||||
return function(_6){
|
||||
_5.errback(_6.message);
|
||||
};
|
||||
},resultCallback:function(_7){
|
||||
var tf=dojo.hitch(this,function(_8){
|
||||
if(_8.error!=null){
|
||||
var _9;
|
||||
if(typeof _8.error=="object"){
|
||||
_9=new Error(_8.error.message);
|
||||
_9.code=_8.error.code;
|
||||
_9.error=_8.error.error;
|
||||
}else{
|
||||
_9=new Error(_8.error);
|
||||
}
|
||||
_9.id=_8.id;
|
||||
_9.errorObject=_8;
|
||||
_7.errback(_9);
|
||||
}else{
|
||||
_7.callback(this.parseResults(_8));
|
||||
}
|
||||
});
|
||||
return tf;
|
||||
},generateMethod:function(_a,_b,_c){
|
||||
return dojo.hitch(this,function(){
|
||||
var _d=new dojo.Deferred();
|
||||
if((this.strictArgChecks)&&(_b!=null)&&(arguments.length!=_b.length)){
|
||||
throw new Error("Invalid number of parameters for remote method.");
|
||||
}else{
|
||||
this.bind(_a,dojo._toArray(arguments),_d,_c);
|
||||
}
|
||||
return _d;
|
||||
});
|
||||
},processSmd:function(_e){
|
||||
if(_e.methods){
|
||||
dojo.forEach(_e.methods,function(m){
|
||||
if(m&&m.name){
|
||||
this[m.name]=this.generateMethod(m.name,m.parameters,m.url||m.serviceUrl||m.serviceURL);
|
||||
if(!dojo.isFunction(this[m.name])){
|
||||
throw new Error("RpcService: Failed to create"+m.name+"()");
|
||||
}
|
||||
}
|
||||
},this);
|
||||
}
|
||||
this.serviceUrl=_e.serviceUrl||_e.serviceURL;
|
||||
this.required=_e.required;
|
||||
this.smd=_e;
|
||||
}});
|
||||
}
|
||||
Reference in New Issue
Block a user