UNPKG

core

Version:

Core Libs

175 lines (159 loc) 4.24 kB
/** * @overview JsonRpcResponse * @copyright Dreamlab Onet.pl sp. z. o o 2012 */ var JsonRpcAbstract = require("./JsonRpcAbstract.js").JsonRpcAbstract; var JsonRpcError = require('./JsonRpcError.js').JsonRpcError; /** * @class JsonRpcResponse * @classdesc JsonRpcResponse * @extends JsonRpcAbstract * * @requires JsonRpcAbstract * @requires JsonRpcError * * @param {Number} id * @param {Object} result * @param {Object} error * @returns {JsonRpcResponse} * * @example empty object: new JsonRpcResponse() * @example specifining parameters: new JsonRpcResponse(id, result, error); * @example from object literal: new JsonRpcResponse({'id': 1, 'result': Object, 'error': {'code': -1, 'message': 'msg', 'data': 'some data'}}); * @example from json string: new JsonRpcResponse("{'id': 1, 'result': Object, 'error': {'code': -1, 'message': 'msg', 'data': 'some data'}}"); */ var JsonRpcResponse = function (id, result, error) { this._id = null; this._result = null; this._error = null; JsonRpcAbstract.apply(this, arguments); }; JsonRpcResponse.prototype = Object.create(JsonRpcAbstract.prototype); /** * Initialize object from object literal * @param {Array} args object literal in format: [id:Number, result:Object, error:Object] * @return {undefined} * @throws JsonRpcAbstract.Exceptions.INVALID_JSON_RPC * @method * @private */ JsonRpcResponse.prototype._init = function (args) { if (args[0]) { this.setId(args[0]); } else { throw new Error(JsonRpcAbstract.Exceptions.INVALID_JSON_RPC); } if (typeof args[1] !== 'undefined') { this.setResult(args[1]); } if (typeof args[2] !== 'undefined') { this.setError(new JsonRpcError(args[2])); } }; /** * Parses response json into array of parameters * @param {Object} json object literal in format: {'id':Number, 'result':Object, 'error': Object} * @return {Array} * @method * @private */ JsonRpcResponse.prototype._parse = function (json) { return [ json.id, json.result, json.error ]; }; /** * Sets JsonRpc Id * @param {Number} id * @returns {JsonRpcResponse} * @throws Id should be a string * @method */ JsonRpcResponse.prototype.setId = function (id) { if (typeof id !== 'string') { throw new Error("Id should be a String"); } this._id = id; return this; }; /** * Returns JsonRpc Id * @returns {Number} * @method */ JsonRpcResponse.prototype.getId = function () { return this._id; }; /** * Sets JsonRpc result object * @param {Object} result * @returns {JsonRpcResponse} * @method */ JsonRpcResponse.prototype.setResult = function (result) { this._result = result; return this; }; /** * Returns JsonRpc result object * @returns {Object} * @method */ JsonRpcResponse.prototype.getResult = function () { return this._result; }; /** * Sets JsonRpc error * * @param {Number|JsonRpcError} code * @param {String} message * @param {Object} data * * @returns {JsonRpcResponse} * @example jsonRpcResponse.setError(-1, 'msg', 'data'); * @example jsonRpcResponse.setError(new JsonRpcError(-1, 'msg', 'data')); * @method */ JsonRpcResponse.prototype.setError = function (code, message, data) { if (code instanceof JsonRpcError) { this._error = code; } else { this._error = new JsonRpcError(code, message, data); } return this; }; /** * Returns JsonRpc error * @returns {JsonRpcError} * @method */ JsonRpcResponse.prototype.getError = function () { return this._error; }; /** * Determines if JsonRpc response has error in it * @method * @returns {Boolean} */ JsonRpcResponse.prototype.isError = function () { return this._error !== null; }; /** * Returns JSON representation of a jsonrpc response * @method * @returns {Object} in format: {jsonrpc: "1.1", id: 20, result:Object, error: {code: -1, message: 'msg', data: 'data'}} */ JsonRpcResponse.prototype.toJson = function () { var jsonObj = { jsonrpc: this._jsonrpc, id: this._id, result: this._result }; if (this._error) { jsonObj.error = this._error.toJson(); } return jsonObj; }; exports.JsonRpcResponse = JsonRpcResponse;