Added jsonp support
bzr revid: nicolas.vanhoren@openerp.com-20130116152044-28v3mizqyzvbmy3a
This commit is contained in:
@@ -4,27 +4,21 @@ define(["nova", "jquery", "underscore"], function(nova, $, _) {
|
||||
|
||||
livesupport.main = function(server_url, db, login, password) {
|
||||
console.log("hello");
|
||||
var connection = new Connection(new JsonRPCConnector(server_url), db, login, password);
|
||||
var connection = new Connection(new JsonpRPCConnector(server_url), db, login, password);
|
||||
var userModel = connection.getModel("res.users");
|
||||
userModel.call("search", [[["login", "=", "admin"]]]).then(function(result) {
|
||||
console.log(result);
|
||||
});
|
||||
};
|
||||
|
||||
function jsonRpc(url, fct_name, params, settings) {
|
||||
function genericJsonRPC(fct_name, params, fct) {
|
||||
var data = {
|
||||
jsonrpc: "2.0",
|
||||
method: fct_name,
|
||||
params: params,
|
||||
id: Math.floor(Math.random()* (1000*1000*1000)),
|
||||
};
|
||||
return $.ajax(url, _.extend({}, settings, {
|
||||
url: url,
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
data: JSON.stringify(data),
|
||||
contentType: 'application/json',
|
||||
})).pipe(function(result) {
|
||||
return fct(data).pipe(function(result) {
|
||||
if (result.error !== undefined) {
|
||||
console.error("Server application error", result.error);
|
||||
return $.Deferred().reject("server", result.error);
|
||||
@@ -36,6 +30,31 @@ define(["nova", "jquery", "underscore"], function(nova, $, _) {
|
||||
var def = $.Deferred();
|
||||
return def.reject.apply(def, ["communication"].concat(_.toArray(arguments)));
|
||||
});
|
||||
}
|
||||
|
||||
function jsonRpc(url, fct_name, params, settings) {
|
||||
return genericJsonRPC(fct_name, params, function(data) {
|
||||
return $.ajax(url, _.extend({}, settings, {
|
||||
url: url,
|
||||
dataType: 'json',
|
||||
type: 'POST',
|
||||
data: JSON.stringify(data),
|
||||
contentType: 'application/json',
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
function jsonpRpc(url, fct_name, params, settings) {
|
||||
return genericJsonRPC(fct_name, params, function(data) {
|
||||
return $.ajax(url, _.extend({}, settings, {
|
||||
url: url,
|
||||
dataType: 'jsonp',
|
||||
jsonp: 'jsonp',
|
||||
type: 'GET',
|
||||
cache: false,
|
||||
data: {r: JSON.stringify(data)},
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
var Connector = nova.Class.$extend({
|
||||
@@ -53,6 +72,12 @@ define(["nova", "jquery", "underscore"], function(nova, $, _) {
|
||||
},
|
||||
});
|
||||
|
||||
var JsonpRPCConnector = JsonRPCConnector.$extend({
|
||||
send: function(serviceName, method, args) {
|
||||
return jsonpRpc(this.url, "call", {"service": serviceName, "method": method, "args": args});
|
||||
},
|
||||
});
|
||||
|
||||
var Service = nova.Class.$extend({
|
||||
__init__: function(connector, serviceName) {
|
||||
this.connector = connector;
|
||||
|
||||
Reference in New Issue
Block a user