@polkadot/api-provider
Version:
Transport providers for the API
43 lines (33 loc) • 1.56 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = decodeResponse;
var _assert = _interopRequireDefault(require("@polkadot/util/assert"));
var _number = _interopRequireDefault(require("@polkadot/util/is/number"));
var _undefined = _interopRequireDefault(require("@polkadot/util/is/undefined"));
// Copyright 2017-2018 @polkadot/api-provider authors & contributors
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
function checkError(error) {
if (!error) {
return;
}
const code = error.code,
message = error.message;
throw new Error(`[${code}]: ${message}`);
}
function decodeResponse(self, response) {
(0, _assert.default)(response, 'Empty response object received');
(0, _assert.default)(response.jsonrpc === '2.0', 'Invalid jsonrpc field in decoded object');
const isSubscription = !(0, _undefined.default)(response.params) && !(0, _undefined.default)(response.method);
(0, _assert.default)((0, _number.default)(response.id) || isSubscription && (0, _number.default)(response.params.subscription), 'Invalid id field in decoded object');
checkError(response.error);
(0, _assert.default)(!(0, _undefined.default)(response.result) || isSubscription, 'No result found in JsonRpc response');
if (isSubscription) {
checkError(response.params.error);
return response.params.result;
}
return response.result;
}