123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- define("dojox/rpc/JsonRPC", ["dojo", "dojox", "dojox/rpc/Service"], function(dojo, dojox) {
- function jsonRpcEnvelope(version){
- return {
- serialize: function(smd, method, data, options){
- //not converted to json it self. This will be done, if
- //appropriate, at the transport level
-
- var d = {
- id: this._requestId++,
- method: method.name,
- params: data
- };
- if(version){
- d.jsonrpc = version;
- }
- return {
- data: dojo.toJson(d),
- handleAs:'json',
- contentType: 'application/json',
- transport:"POST"
- };
- },
-
- deserialize: function(obj){
- if ('Error' == obj.name){
- obj = dojo.fromJson(obj.responseText);
- }
- if(obj.error) {
- var e = new Error(obj.error.message || obj.error);
- e._rpcErrorObject = obj.error;
- return e;
- }
- return obj.result;
- }
- };
- }
- dojox.rpc.envelopeRegistry.register(
- "JSON-RPC-1.0",
- function(str){
- return str == "JSON-RPC-1.0";
- },
- dojo.mixin({namedParams:false},jsonRpcEnvelope()) // 1.0 will only work with ordered params
- );
- dojox.rpc.envelopeRegistry.register(
- "JSON-RPC-2.0",
- function(str){
- return str == "JSON-RPC-2.0";
- },
- jsonRpcEnvelope("2.0")
- );
- });
|