diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index c419685c222..e33b4d73044 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -199,206 +199,6 @@ instance.web.Registry = instance.web.Class.extend({ } }); -instance.web.JsonRPC = instance.web.Class.extend(instance.web.PropertiesMixin, { - triggers: { - 'request': 'Request sent', - 'response': 'Response received', - 'response_failed': 'HTTP Error response or timeout received', - 'error': 'The received response is an JSON-RPC error', - }, - /** - * @constructs instance.web.JsonRPC - * - * @param {String} [server] JSON-RPC endpoint hostname - * @param {String} [port] JSON-RPC endpoint port - */ - init: function() { - instance.web.PropertiesMixin.init.call(this); - this.server = null; - this.debug = ($.deparam($.param.querystring()).debug !== undefined); - this.override_session = false; - this.session_id = undefined; - }, - setup: function(origin) { - var window_origin = location.protocol+"//"+location.host, self=this; - this.origin = origin ? _.str.rtrim(origin,'/') : window_origin; - this.prefix = this.origin; - this.server = this.origin; // keep chs happy - this.rpc_function = (this.origin == window_origin) ? this.rpc_json : this.rpc_jsonp; - }, - /** - * Executes an RPC call, registering the provided callbacks. - * - * Registers a default error callback if none is provided, and handles - * setting the correct session id and session context in the parameter - * objects - * - * @param {String} url RPC endpoint - * @param {Object} params call parameters - * @param {Object} options additional options for rpc call - * @param {Function} success_callback function to execute on RPC call success - * @param {Function} error_callback function to execute on RPC call failure - * @returns {jQuery.Deferred} jquery-provided ajax deferred - */ - rpc: function(url, params, options) { - var self = this; - options = options || {}; - // url can be an $.ajax option object - if (_.isString(url)) { - url = { url: url }; - } - _.defaults(params, { - context: this.user_context || {} - }); - // Construct a JSON-RPC2 request, method is currently unused - var payload = { - jsonrpc: '2.0', - method: 'call', - params: params, - id: _.uniqueId('r') - }; - var deferred = $.Deferred(); - if (! options.shadow) - this.trigger('request', url, payload); - - if (options.timeout) - url.timeout = options.timeout; - - this.rpc_function(url, payload).then( - function (response, textStatus, jqXHR) { - if (! options.shadow) - self.trigger('response', response); - if (!response.error) { - deferred.resolve(response["result"], textStatus, jqXHR); - } else if (response.error.code === 100) { - self.uid = false; - } else { - deferred.reject(response.error, $.Event()); - } - }, - function(jqXHR, textStatus, errorThrown) { - if (! options.shadow) - self.trigger('response_failed', jqXHR); - var error = { - code: -32098, - message: "XmlHttpRequestError " + errorThrown, - data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] } - }; - deferred.reject(error, $.Event()); - }); - // Allow deferred user to disable rpc_error call in fail - deferred.fail(function() { - deferred.fail(function(error, event) { - if (!event.isDefaultPrevented()) { - self.trigger('error', error, event); - } - }); - }); - return deferred; - }, - /** - * Raw JSON-RPC call - * - * @returns {jQuery.Deferred} ajax-webd deferred object - */ - rpc_json: function(url, payload) { - var self = this; - var ajax = _.extend({ - type: "POST", - dataType: 'json', - contentType: 'application/json', - data: JSON.stringify(payload), - processData: false, - headers: { - "X-Openerp-Session-Id": this.override_session ? this.session_id : undefined, - }, - }, url); - if (this.synch) - ajax.async = false; - return $.ajax(ajax); - }, - rpc_jsonp: function(url, payload) { - var self = this; - // extracted from payload to set on the url - var data = { - session_id: this.session_id, - id: payload.id, - }; - - var set_sid = function (response, textStatus, jqXHR) { - // If response give us the http session id, we store it for next requests... - if (response.session_id) { - self.session_id = response.session_id; - } - }; - - url.url = this.url(url.url, null); - var ajax = _.extend({ - type: "GET", - dataType: 'jsonp', - jsonp: 'jsonp', - cache: false, - data: data - }, url); - if (this.synch) - ajax.async = false; - var payload_str = JSON.stringify(payload); - var payload_url = $.param({r:payload_str}); - if (payload_url.length < 2000) { - // Direct jsonp request - ajax.data.r = payload_str; - return $.ajax(ajax).done(set_sid); - } else { - // Indirect jsonp request - var ifid = _.uniqueId('oe_rpc_iframe'); - var display = self.debug ? 'block' : 'none'; - var $iframe = $(_.str.sprintf("", ifid, ifid, display)); - var $form = $('