github-pr-notifier
v0.1.2
Published
Library to receive GitHub notifications when a status in a PR is updated
Downloads
9
Readme
GitHub PR Notifier
Package for proccessing GitHub webhooks into notifications objects.
This package, in a nutshell, receives the data of the Webhook and produces a simple readable object of who should be informed about a Pull Request update.
This package is intended to be used with a notification bot, could be a Slack bot, a Discord, Matrix, Telegram or any platform that supports bots.
How to install
npm install --save github-pr-notifier
Usage
Once you receive a webhook event from GitHub you can simply pass the object by doing:
import { parseWebhook } from "github-pr-notifier";
const parsedData = parseWebhook(request.body);
This will return an NotificationObject
which has the following values
interface NotificationObject {
/** User who should receive a message with the information */
target: { username: string, id: number, url:string };
/** User who triggered this event */
sender: { username: string, id: number, url:string };
/** Type of event which triggered this notification */
event: NotificationEvent;
/** Message that was submitted with the review (can be null) */
message?: string
/** URL to the notification */
url: string;
/** Title of the PR */
title: string;
}
export enum NotificationEvent {
RequestedReview,
Approved,
Commented,
RequestedChanges
}
This system does not provide a way of linking chat accounts to GitHub logins so you need to handle that part yourself, but if you do have that system already in place, you could run something like:
import { parseWebhook } from "github-pr-notifier";
const data = parseWebhook(request.body);
const slackUser = await githubUserToSlackUser(data.target.username);
const markdownMsg = `[${data.sender.username}](${data.sender.url}) has ${eventToString(data.event)} for [${data.title}](${data.url})\n> ${data.message}`
slackUser.notify(markdownMsg)
And you would get a message that would look something along the lines of:
Bullrich has requested your review for ci: added prace