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