]> git.wh0rd.org - tt-rss.git/blame - lib/dojo/rpc/JsonService.js.uncompressed.js
upgrade dojo to 1.8.3 (refs #570)
[tt-rss.git] / lib / dojo / rpc / JsonService.js.uncompressed.js
CommitLineData
f0cfe83e
AD
1define("dojo/rpc/JsonService", [
2 "../_base/declare", "../_base/Deferred", "../_base/json", "../_base/lang", "../_base/xhr",
3 "./RpcService"
4], function(declare, Deferred, json, lang, xhr, RpcService){
5
6 // module:
7 // dojo/rpc/JsonService
8
9 return declare("dojo.rpc.JsonService", RpcService, {
10 // summary:
11 // TODOC
12
13 bustCache: false,
14 contentType: "application/json-rpc",
15 lastSubmissionId: 0,
16
17 callRemote: function(method, params){
18 // summary:
19 // call an arbitrary remote method without requiring it to be
20 // predefined with SMD
21 // method: string
22 // the name of the remote method you want to call.
23 // params: array
24 // array of parameters to pass to method
25
26 var deferred = new Deferred();
27 this.bind(method, params, deferred);
28 return deferred;
29 },
30
31 bind: function(method, parameters, deferredRequestHandler, url){
32 // summary:
33 // JSON-RPC bind method. Takes remote method, parameters,
34 // deferred, and a url, calls createRequest to make a JSON-RPC
35 // envelope and passes that off with bind.
36 // method: string
37 // The name of the method we are calling
38 // parameters: array
39 // The parameters we are passing off to the method
40 // deferredRequestHandler: deferred
41 // The Deferred object for this particular request
42
43 var def = xhr.post({
44 url: url||this.serviceUrl,
45 postData: this.createRequest(method, parameters),
46 contentType: this.contentType,
47 timeout: this.timeout,
48 handleAs: "json-comment-optional"
49 });
50 def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler));
51 },
52
53 createRequest: function(method, params){
54 // summary:
55 // create a JSON-RPC envelope for the request
56 // method: string
57 // The name of the method we are creating the request for
58 // params: array
59 // The array of parameters for this request
60
61 var req = { "params": params, "method": method, "id": ++this.lastSubmissionId };
62 return json.toJson(req);
63 },
64
65 parseResults: function(/*anything*/obj){
66 // summary:
67 // parse the result envelope and pass the results back to
68 // the callback function
69 // obj: Object
70 // Object containing envelope of data we receive from the server
71
72 if(lang.isObject(obj)){
73 if("result" in obj){
74 return obj.result;
75 }
76 if("Result" in obj){
77 return obj.Result;
78 }
79 if("ResultSet" in obj){
80 return obj.ResultSet;
81 }
82 }
83 return obj;
84 }
85 });
86
87});