diff --git a/external-scripts.json b/external-scripts.json index a5e495e..6d666c9 100644 --- a/external-scripts.json +++ b/external-scripts.json @@ -10,6 +10,5 @@ "hubot-seen", "hubot-rss-reader", "hubot-incoming-webhook", - "hubot-yubikey-invalidation", - "hubot-kredits" + "hubot-yubikey-invalidation" ] diff --git a/package.json b/package.json index 168fedf..194310b 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,14 @@ "hubot-shipit": "^0.2.0", "hubot-tell": "^1.2.3", "hubot-yubikey-invalidation": "0.0.3", - "request": "2.30.0" + "request": "2.30.0", + "node-fetch": "^1.6.3", + "request": "2.30.0", + "ethereumjs-wallet": "mvayngrib/ethereumjs-wallet", + "kredits-contracts": "67p/kredits-contracts", + "node-fetch": "^1.6.3", + "web3": "^0.18.4", + "web3-provider-engine": "^12.0.3" }, "engines": { "node": "6.x.x", diff --git a/scripts/hubot-kredts.js b/scripts/hubot-kredts.js index e30505d..fb86583 100644 --- a/scripts/hubot-kredts.js +++ b/scripts/hubot-kredts.js @@ -10,6 +10,39 @@ // const fs = require('fs'); const fetch = require('node-fetch'); +const kreditsContracts = require('kredits-contracts'); +const fs = require('fs'); +const ProviderEngine = require('web3-provider-engine'); +const Wallet = require('ethereumjs-wallet'); +const WalletSubprovider = require('ethereumjs-wallet/provider-engine'); +const Web3Subprovider = require('web3-provider-engine/subproviders/web3.js'); +const Web3 = require('web3'); + +let engine = new ProviderEngine(); + +let walletPath = process.env.KREDITS_WALLET_PATH || './wallet.json'; +let walletJson = fs.readFileSync(walletPath); +let wallet = Wallet.fromV3(JSON.parse(walletJson), process.env.KREDITS_WALLET_PASSWORD); +let providerUrl = process.env.KREDITS_PROVIDER_URL || 'http://localhost:8545'; +let hubotWalletAddress = '0x' + wallet.getAddress().toString('hex'); + +engine.addProvider(new WalletSubprovider(wallet, {})); +engine.addProvider(new Web3Subprovider(new Web3.providers.HttpProvider(providerUrl))); +engine.start(); + +let web3 = new Web3(engine); +web3.eth.defaultAccount = hubotWalletAddress; +let contracts = kreditsContracts(web3, {'Kredits': '0x722956CE1fB83dD88d3e56Cf446f9c7e34D1Fc52'}); +let Kredits = contracts['Kredits']; +let Token = contracts['Token']; + +console.log('[HUBOT-KREDITS] wallet address: ' + hubotWalletAddress); +web3.eth.getBalance('eee2de74de31d2e3ef24cb0f6959fd88b59267bd', function (err, balance) { + if (err) { console.log('[HUBOT-KREDITS] error checking balance'); return; } + if (!balance > 0) { + console.log('[HUBOT-KREDITS] Hubot is broke. Please sond some eth to ' + hubotWalletAddress); + } +}); (function() { "use strict"; @@ -44,8 +77,11 @@ const fetch = require('node-fetch'); // TODO write metaData to IPFS console.log(`Creating proposal to issue ${amount}₭S to ${recipient} for ${url}...`); - // robot.messageRoom(process.env.KREDITS_ROOM, message); - resolve(); + recipient = '0x74d05F57e14b16018938F60F78a4a687586A484d'; + Kredits.addProposal(address, amount, url, '', function (err, response) { + robot.messageRoom(process.env.KREDITS_ROOM, `new proposal: ${amount} for ${recipient} - https://kredits.kosmos.org`); + resolve(); + }); }); } @@ -125,3 +161,4 @@ const fetch = require('node-fetch'); }; }()); +