test-triam-base-contract
Version:
Low level triam smart cotnract support library
76 lines (54 loc) • 2.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.callContract = undefined;
var _stellarXdr_generated = require("../generated/stellar-xdr_generated");
var _stellarXdr_generated2 = _interopRequireDefault(_stellarXdr_generated);
var _keypair = require("../keypair");
var _strkey = require("../strkey");
var _clone = require("lodash/clone");
var _clone2 = _interopRequireDefault(_clone);
var _isUndefined = require("lodash/isUndefined");
var _isUndefined2 = _interopRequireDefault(_isUndefined);
var _isString = require("lodash/isString");
var _isString2 = _interopRequireDefault(_isString);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Call a contract operation.
* @function
* @alias Operation.callContract
* @param {object} opts
* @param {string} opts.contractId - Contract account ID.
* @param {object} opts.data - Address of contract
* @param {string} [opts.data.funcName] - function name
* @param {string|Buffer} [opts.data.contractParams] - params of contract functions
*
* @returns {xdr.CallContractOp}
*/
var callContract = exports.callContract = function callContract(opts) {
if (!_strkey.StrKey.isValidContractKey(opts.contractId)) {
throw new Error("contract is invalid");
}
var attributes = {};
attributes.contractId = _keypair.Keypair.fromContractKey(opts.contractId).xdrContractId();
//-----------------------
if (!(0, _isUndefined2.default)(opts.data.funcName) && !(0, _isString2.default)(opts.data.funcName)) {
throw new TypeError('funcName argument must be of type String');
}
if (!(0, _isString2.default)(opts.data.contractParams) && !Buffer.isBuffer(opts.data.contractParams) && opts.data.contractParams !== null) {
throw new Error("contractParams must be a string, Buffer or null");
}
if ((0, _isString2.default)(opts.data.contractParams)) {
opts.data.contractParams = Buffer.from(opts.data.contractParams);
}
attributes.data = new _stellarXdr_generated2.default.ContractInput(opts.data);
attributes.contrOps = [];
attributes.errFlag = 0;
//-----------------------
var callContract = new _stellarXdr_generated2.default.CallContractOp(attributes);
var opAttributes = {};
opAttributes.body = _stellarXdr_generated2.default.OperationBody.callContract(callContract);
this.setSourceAccount(opAttributes, opts);
return new _stellarXdr_generated2.default.Operation(opAttributes);
};