File: jsonrpc.js

package info (click to toggle)
trac-xmlrpc 1.0.6%2Bsvn6598-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 308 kB
  • ctags: 427
  • sloc: python: 2,413; cs: 100; makefile: 4
file content (50 lines) | stat: -rw-r--r-- 1,017 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
jQuery.jsonrpc = function(url) {
  this.url = url;
  this.server = {};
  this.callbacks = Array();
  this.id = 0;
};

// Register a new server-side RPC method
jQuery.jsonrpc.prototype.expose = function(name) {
  var path = name.split('.');
  var current = this.server;
  var jsonrpc = this;

  for (var i = 0; i < path.length - 1; ++i) {
    if (!current[path[i]]) {
      current[path[i]] = {}
    }
    current = current[path[i]];
  }

  var inject = function(callback) {
    var arglist = Array.prototype.slice.apply(arguments).slice(1);

    var data = {
      method: name,
      params: $.toJSON(arglist),
    }

    var ajax_options = {
      url: jsonrpc.url,
      dataType: 'json',
      success: function(result) {
        return callback(result['result']);
      },
      data: data,
    };

    for (var key in inject) {
      if (key != 'prototype') {
        ajax_options[key] = inject[key];
      }
    }

    $.ajax(ajax_options);
  };

  current[path[path.length - 1]] = inject;

  return inject
};