0.1.2 • Published 2 years ago

github-pr-notifier v0.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

GitHub PR Notifier

CodeFactor

npm version

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

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago