12 Commits

Author SHA1 Message Date
8596483721 1.4.5 2017-05-13 15:49:38 +02:00
f54e124dba Fix diverging webhook object structure
No idea why, but on the server, all data is contained within a single
'payload' property, while I've never seen any such property on my
machine. Could be different node or express versions, but in any case,
this should fix it so that it just works no matter what.
2017-05-13 15:47:35 +02:00
fb8fc88101 1.4.4 2017-05-13 15:15:30 +02:00
6ca1254c9a Fix GitHub POST handler
1. robot.logger.debug didn't show any output
2. Send response for all requests
2017-05-13 15:14:22 +02:00
38483cbbeb 1.4.3 2017-05-12 14:02:54 +02:00
0203cb1a62 Fix typo 2017-05-12 14:02:46 +02:00
797fddfafb 1.4.2 2017-05-12 13:58:16 +02:00
82fe54b90a Fix string interpolation 2017-05-12 13:58:05 +02:00
4a8ea160a8 1.4.1 2017-05-12 01:39:55 +02:00
17543cb67b Return ether instead of wei 2017-05-12 01:39:27 +02:00
9bd875acba 1.4.0 2017-05-12 01:28:35 +02:00
cae2bd84b2 Ask for balance 2017-05-12 01:28:14 +02:00
2 changed files with 45 additions and 13 deletions

View File

@@ -47,23 +47,35 @@ const Web3 = require('web3');
robot.logger.info('[hubot-kredits] Wallet address: ' + hubotWalletAddress);
web3.eth.getBalance(hubotWalletAddress, function (err, balance) {
if (err) { robot.logger.error('[hubot-kredits] Error checking balance'); return; }
getBalance().then(balance => {
if (balance <= 0) {
robot.logger.info('[hubot-kredits] Hubot is broke. Please send some ETH to ' + hubotWalletAddress);
messageRoom(`Yo gang, I\'m broke! Please drop me some ETH to ${hubotWalletAddress}. kthxbai.`);
}
});
let getValueFromContract = function(contractMethod, ...args) {
function getBalance() {
return new Promise((resolve, reject) => {
web3.eth.getBalance(hubotWalletAddress, function (err, balance) {
if (err) {
robot.logger.error('[hubot-kredits] Error checking balance');
reject(err);
return;
}
resolve(balance);
});
});
}
function getValueFromContract(contractMethod, ...args) {
return new Promise((resolve, reject) => {
kredits[contractMethod](...args, (err, data) => {
if (err) { reject(err); }
resolve(data);
});
});
};
}
let getContributorData = function(i) {
function getContributorData(i) {
let promise = new Promise((resolve, reject) => {
getValueFromContract('contributorAddresses', i).then(address => {
robot.logger.debug('address', address);
@@ -81,9 +93,9 @@ const Web3 = require('web3');
}).catch(err => reject(err));
});
return promise;
};
}
let getContributors = function() {
function getContributors() {
return getValueFromContract('contributorsCount').then(contributorsCount => {
let contributors = [];
@@ -93,9 +105,9 @@ const Web3 = require('web3');
return Promise.all(contributors);
});
};
}
let getContributorByGithubUser = function(username) {
function getContributorByGithubUser(username) {
let promise = new Promise((resolve, reject) => {
getContributors().then(contributors => {
let contrib = contributors.find(c => {
@@ -109,7 +121,7 @@ const Web3 = require('web3');
});
});
return promise;
};
}
function messageRoom(message) {
robot.messageRoom(process.env.KREDITS_ROOM, message);
@@ -217,16 +229,36 @@ const Web3 = require('web3');
});
}
robot.respond(/(got ETH)|(got gas)\?/i, res => {
getBalance().then(balance => {
if (balance <= 0) {
res.send(`HALP, I\'m totally broke! Not a single wei in my pocket.`);
}
else if (balance >= 1e+17) {
res.send(`my wallet contains ${web3.fromWei(balance, 'ether')} ETH`);
}
else {
res.send(`I\'m almost broke! Only have ${web3.fromWei(balance, 'ether')} ETH left in my pocket. :(`);
}
});
});
robot.router.post('/incoming/kredits/github/'+process.env.KREDITS_WEBHOOK_TOKEN, (req, res) => {
let evt = req.header('X-GitHub-Event');
let data = req.body;
robot.logger.debug(`Received GitHub hook. Event: ${evt}, action: ${data.action}`);
// For some reason data is contained in a payload property on one
// machine, but directly in the root of the object on others
if (data.payload) { data = data.payload; }
robot.logger.info(`Received GitHub hook. Event: ${evt}, action: ${data.action}`);
if (evt === 'pull_request' && data.action === 'closed') {
handleGitHubPullRequestClosed(data).then(() => res.send(200));
}
else if (evt === 'issues' && data.action === 'closed') {
handleGitHubIssueClosed(data).then(() => res.send(200));
} else {
res.send(200);
}
});

View File

@@ -1,6 +1,6 @@
{
"name": "hubot-kredits",
"version": "1.3.0",
"version": "1.4.5",
"description": "Kosmos Kredits functionality for chat bots",
"main": "index.js",
"scripts": {