2016-08-14 12:04:34 +00:00
|
|
|
|
2016-08-26 11:51:58 +00:00
|
|
|
var ABIGenerator = function(blockchainConfig, contractsManager) {
|
|
|
|
this.blockchainConfig = blockchainConfig;
|
2016-08-14 12:04:34 +00:00
|
|
|
this.contractsManager = contractsManager;
|
2016-08-26 11:51:58 +00:00
|
|
|
this.rpcHost = blockchainConfig.rpcHost;
|
|
|
|
this.rpcPort = blockchainConfig.rpcPort;
|
2016-08-14 12:04:34 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
ABIGenerator.prototype.generateProvider = function() {
|
|
|
|
var result = "";
|
|
|
|
|
|
|
|
result += "\nif (typeof web3 !== 'undefined' && typeof Web3 !== 'undefined') {";
|
|
|
|
result += '\n\tweb3 = new Web3(web3.currentProvider);';
|
|
|
|
result += "\n} else if (typeof Web3 !== 'undefined') {";
|
|
|
|
result += '\n\tweb3 = new Web3(new Web3.providers.HttpProvider("http://' + this.rpcHost + ':' + this.rpcPort + '"));';
|
|
|
|
result += '\n}';
|
|
|
|
result += "\nweb3.eth.defaultAccount = web3.eth.accounts[0];";
|
|
|
|
|
|
|
|
return result;
|
|
|
|
};
|
|
|
|
|
|
|
|
ABIGenerator.prototype.generateContracts = function() {
|
|
|
|
var result = "\n";
|
|
|
|
|
|
|
|
for(var className in this.contractsManager.contracts) {
|
|
|
|
var contract = this.contractsManager.contracts[className];
|
|
|
|
|
|
|
|
var abi = JSON.stringify(contract.abiDefinition);
|
|
|
|
|
2016-08-18 11:45:08 +00:00
|
|
|
//console.log('address is ' + contract.deployedAddress);
|
2016-08-14 12:04:34 +00:00
|
|
|
|
2016-08-18 11:45:08 +00:00
|
|
|
//result += "\n" + className + "Abi = " + abi + ";";
|
|
|
|
//result += "\n" + className + "Contract = web3.eth.contract(" + className + "Abi);";
|
|
|
|
//result += "\n" + className + " = " + className + "Contract.at('" + contract.deployedAddress + "');";
|
|
|
|
|
|
|
|
result += "\n" + className + " = new EmbarkJS.Contract({abi: " + abi + ", address: '" + contract.deployedAddress + "', code: '" + contract.code + "'});";
|
2016-08-14 12:04:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
};
|
|
|
|
|
2016-08-18 00:29:41 +00:00
|
|
|
ABIGenerator.prototype.generateABI = function() {
|
|
|
|
var result = "";
|
|
|
|
|
|
|
|
result += this.generateProvider();
|
|
|
|
result += this.generateContracts();
|
|
|
|
|
|
|
|
return result;
|
|
|
|
};
|
|
|
|
|
2016-08-14 12:04:34 +00:00
|
|
|
module.exports = ABIGenerator;
|