1.0.1 • Published 8 years ago

webhook-forwarder v1.0.1

Weekly downloads
4
License
ISC
Repository
github
Last release
8 years ago

Webhook-forwarder

simple webhook forwarder with subscribe and auto cleanup.

Install

npm

npm i -g webhook-forwarder
webhook-forwarder [OPTIONS]

github

git clone git@github.com:vigour-io/webhook-forwarder.git &&\
cd webhook-forwarder &&\
npm i &&\
npm start -- [OPTIONS]

Usage

Options

optionaliasdescription
-p--portThe port used to listen for incoming webhooks and /subscribe requests
-s--strikesThe amount of times a subscriber is allowed to be unresponsive at a hook forward. When no strikes are left, the subscriber is removed, when responsive, strikes are reset.
-d--database.urlRedis database server to connect to for storing subscription info (true defaults to 127.0.0.1:6379)
-w--database.passwordPassword to your Redis server
-l--database.labelIdentifier used to grab a namespace within the database
-h--helpShow help

Environment variables

Each option can be set using environment variables in all caps and prefixed with WHF_, with __ for dots.

  • DEBUG=str
  • WHF_PORT=int
  • WHF_STRIKES=int
  • WHF_DATABASE__URL=str
  • WHF_DATABASE__PASSWORD=str
  • WHF_DATABASE__LABEL=str

API

Subscribe

Used to subscribe to a webhook endpoint, meaning all webhooks landing on this endpoint will be forwarded to the subscriber.

endpoint: /subscribe

Method: GET

Parameters:

parameterdescriptionexample
endpointAll webhooks landing on this endpoint should be forwarded to the subscribertravis
urlThe url that the webhooks should be forwarded tohttp://forward-to.me/travis URI encoded http%3A%2F%2Fforward-to.me%2Ftravis

Example

http://my-webhook-forwarder.com/subscribe?endpoint=travis&url=http%3A%2F%2Fforward-to.me%2Ftravis

Easy way to get these query strings URI encoded:

const querystring = require('querystring')

const exampleString = querystring.stringify({
  endpoint: 'travis',
  url: 'http://forward-to.me/travis'
})

// exampleString is now
// "endpoint=travis&url=http%3A%2F%2Fforward-to.me%2Ftravis"

Webhooks

Any POST requests landing on the forwarder will be accepted, and if there is a subscriber for the endpoint the hookshot was fired on, it will be forwarded.

endpoint: /*

Method: POST

Database

The databse is used to keep a persistant and possibly shared record of subscribers.

Label

options.database.label is used to create a namespace and enable the forwarder to find it's subscribers on load.

A forwarder with label myLabel will find it's subscribers as follows:

redis> SMEMBERS myLabel
1) "myLabel/travis"
2) "myLabel/endpoint2"

redis> SMEMBERS myLabel/travis
1) "http://forward-to.me/travis"
2) "http://also-to.me/travis"

redis> SMEMBERS myLabel/endpoint2
1) "http://forward-to.me/stuff"
2) "http://random.me-too/webhooks"