properly handle github webhooks
This commit is contained in:
parent
9dc1ece94f
commit
3fe6dfb2ce
28
index.js
28
index.js
@ -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);
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user