This is a client library for listening (receiving) to GitHub Webhooks and execute a callback on them.
Note: This client library based on the excellent Node Github Hook library.
npm install gh-listener
import GHClient from "gh-listener";
const github = new GHClient({
/* options: see below */
});
github.onPush((data) => {
console.log(data.commits.map(x => x.author)); // prints the authors of the commits
});
The library has the following methods and supports their respective events:
Method | Event | GitHub Reference |
---|---|---|
github.onCommitComment(cb) |
commit_comment |
Reference |
github.onCreate(cb) |
create |
Reference |
github.onDelete(cb) |
delete |
Reference |
github.onDeployment(cb) |
deployment |
Reference |
github.onDeploymentStatus(cb) |
deployment_status |
Reference |
github.onFork(cb) |
fork |
Reference |
github.onGollum(cb) |
gollum |
Reference |
github.onInstallation(cb) |
installation |
Reference |
github.onInstallationRepository(cb) |
installation_repository |
Reference |
github.onIssueComment(cb) |
issue_comment |
Reference |
github.onIssue(cb) |
issue |
Reference |
github.onLabel(cb) |
label |
Reference |
github.onMembership(cb) |
membership |
Reference |
github.onMilestone(cb) |
milestone |
Reference |
github.onOrganization(cb) |
organization |
Reference |
github.onOrganizationBlock(cb) |
organizationBlock |
Reference |
github.onPageBuild(cb) |
page_build |
Reference |
github.onPullRequest(cb) |
pull_request |
Reference |
github.onPullRequestReview(cb) |
pull_request_review |
Reference |
github.onPullRequestReviewComment(cb) |
pull_request_review_comment |
Reference |
github.onPush(cb) |
push |
Reference |
github.onRelease(cb) |
release |
Reference |
github.onRepository(cb) |
repository |
Reference |
github.onStatus(cb) |
status |
Reference |
github.onWatch(cb) |
watch |
Reference |
Available options are:
- host: the host to listen on, defaults to '0.0.0.0'
- port: the port to listen on, defaults to 3420
- path: the path for the GitHub callback, defaults to '/github/callback'
- wildcard: if true, the path for the GitHub callback will be considered valid as long as it starts with the configured path
- secret: if specified, you must use the same secret in your webhook configuration in GitHub. if a secret is specified, but one is not configured in GitHub, the hook will fail. if a secret is not specified, but one is configured in GitHub, the signature will not be validated and will be assumed to be correct. consider yourself warned. this option can also be a function that takes the following parameters: (request, data, callback). callback is error first and should be passed (err, secret)
- logger: an optional instance of a logger that supports the "log" and "error" methods and one parameter for data (like console), default is
console
. - https: Options to pass to nodejs https server. If specified, you must follow documentation about nodejs https library (See options in https://nodejs.org/api/https.html#https_https_createserver_options_requestlistener)
- trustProxy: By default the
x-forwarded-for
header is trusted when determining the remoteAddress to log for a request. Set this tofalse
to disable this behavior - enableHealthcheck: Respond to GET requests with a 204 response for healthcheck purposes
- healthcheckCode: Override the 204 status code for healthchecks (for systems that aren't friendly with HTTP spec compliance and want a 200, for example)
new GHClient({
enableHealthcheck: false,
healthcheckCode: 200,
host: '0.0.0.0',
https: {
ciphers: 'something'
},
path: 'listen',
port: 3000,
secret: 'mysecretkey',
trustProxy: true,
wildcard: true
});
MIT