import {config} from '../config'; import {Logger} from '../utils/logger'; import fetch from 'node-fetch'; function getVoteAuthorRaw(submissionCount: number, isVIP: boolean, isOwnSubmission: boolean): string { if (isOwnSubmission) { return "self"; } else if (isVIP) { return "vip"; } else if (submissionCount === 0) { return "new"; } else { return "other"; } } function getVoteAuthor(submissionCount: number, isVIP: boolean, isOwnSubmission: boolean): string { if (submissionCount === 0) { return "Report by New User"; } else if (isOwnSubmission) { return "Report by Submitter"; } else if (isVIP) { return "Report by VIP User"; } return ""; } function dispatchEvent(scope: string, data: Record): void { const webhooks = config.webhooks; if (webhooks === undefined || webhooks.length === 0) return; Logger.debug("Dispatching webhooks"); for (const webhook of webhooks) { const webhookURL = webhook.url; const authKey = webhook.key; const scopes = webhook.scopes || []; if (!scopes.includes(scope.toLowerCase())) return; fetch(webhookURL, { method: 'POST', body: JSON.stringify(data), headers: { "Authorization": authKey, "Event-Type": scope, // Maybe change this in the future? 'Content-Type': 'application/json' } }) .catch(err => { Logger.warn('Couldn\'t send webhook to ' + webhook.url); Logger.warn(err); }); } } export { getVoteAuthorRaw, getVoteAuthor, dispatchEvent, };