properly handle github webhooks

This commit is contained in:
bumi 2018-04-19 00:13:42 +02:00
parent 9dc1ece94f
commit 3fe6dfb2ce

View File

@ -152,15 +152,16 @@ module.exports = async function(robot) {
}
function handleGitHubIssueClosed(data) {
return new Promise((resolve/*, reject*/) => {
// fs.writeFileSync('tmp/github-issue.json', JSON.stringify(data, null, 4));
let recipients;
let issue = data.issue;
let assignees = issue.assignees.map(a => a.login);
let web_url = issue.html_url;
let amount = amountFromIssueLabels(issue);
if (amount === 0) { resolve(); return; }
if (amount === 0) {
console.log('Proposal amount from issue label is zero; ignoring');
return Promise.resolve();
}
if (assignees.length > 0) {
recipients = assignees;
@ -171,17 +172,18 @@ module.exports = async function(robot) {
let repoName = issue.repository_url.match(/.*\/(.+\/.+)$/)[1];
let description = `${repoName}: ${issue.title}`;
let proposalPromisses = [];
recipients.forEach(recipient => {
proposalPromisses.push(
createProposal(recipient, amount, description, web_url, issue)
.catch(err => robot.logger.error(err));
.catch(err => robot.logger.error(err))
);
});
resolve();
});
return Promise.all(proposalPromisses);
}
function handleGitHubPullRequestClosed(data) {
return new Promise((resolve, reject) => {
let recipients;
let pull_request = data.pull_request;
let assignees = pull_request.assignees.map(a => a.login);
@ -194,23 +196,26 @@ module.exports = async function(robot) {
recipients = [pull_request.user.login];
}
fetch(pr_issue_url)
return fetch(pr_issue_url)
.then(response => {
if (response.status >= 400) {
reject('Bad response from fetching PR issue');
throw new Error('Bad response from fetching PR issue');
}
return response.json();
})
.then(issue => {
// fs.writeFileSync('tmp/github-pr-issue.json', JSON.stringify(data, null, 4));
let amount = amountFromIssueLabels(issue);
if (amount === 0) { resolve(); return; }
if (amount === 0) {
console.log('Proposal amount from issue label is zero; ignoring');
return;
}
let repoName = pull_request.base.repo.full_name;
let description = `${repoName}: ${pull_request.title}`;
let proposalPromisses = [];
recipients.forEach(recipient => {
console.log(`Creating proposal for ${recipient}`);
proposalPromisses.push(
createProposal(recipient, amount, description, web_url, pull_request)
.catch(err => robot.logger.error(err))
@ -218,7 +223,6 @@ module.exports = async function(robot) {
});
return Promise.all(proposalPromisses);
});
});
}