All Projects → roccomuso → Node Webhooks

roccomuso / Node Webhooks

↪️ Node.js module to create and trigger your own webHooks.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Node Webhooks

Lass
👧 Lass scaffolds a modern package boilerplate for Node.js
Stars: ✭ 615 (+291.72%)
Mutual labels:  module, npm
Iot 433mhz
🌐 IoT System to control 433 MHz RC power sockets, PIR, Door Sensors and much more.
Stars: ✭ 301 (+91.72%)
Mutual labels:  webhooks, npm
Npkill
List any node_modules directories in your system, as well as the space they take up. You can then select which ones you want to erase to free up space.
Stars: ✭ 5,325 (+3291.72%)
Mutual labels:  module, npm
Oji
(◕‿◕) Text Emoticons Maker
Stars: ✭ 668 (+325.48%)
Mutual labels:  module, npm
Sao Nm
Scaffold out a node module.
Stars: ✭ 30 (-80.89%)
Mutual labels:  module, npm
Angular File Uploader
Angular file uploader is an Angular 2/4/5/6/7/8/9/10 + file uploader module with Real-Time Progress Bar, Responsive design, Angular Universal Compatibility, localization and multiple themes which includes Drag and Drop and much more.
Stars: ✭ 92 (-41.4%)
Mutual labels:  module, npm
Npm Compare
Compare npm packages from your terminal
Stars: ✭ 55 (-64.97%)
Mutual labels:  module, npm
Instacam
Instant canvas video
Stars: ✭ 106 (-32.48%)
Mutual labels:  module, npm
Laravel Nuxt Js
Build a SPA with Laravel and Nuxt.
Stars: ✭ 146 (-7.01%)
Mutual labels:  npm
Nodejs
This project provides Scala.js type-safe bindings for Node.js (current) v8.7.0 and LTS v6.11.4 APIs. The platform supports MEAN (MongoDB, Express, AngularJs, NodeJS), Cassandra, MySQL and many other npm projects.
Stars: ✭ 152 (-3.18%)
Mutual labels:  npm
Lib React Hooks
General purpose React hooks library ⚛️
Stars: ✭ 145 (-7.64%)
Mutual labels:  npm
Angular Tree Dnd
Display tree table (or list) & event Drap & Drop (allow drag multi tree-table include all type: table, ol, ul) by AngularJS
Stars: ✭ 146 (-7.01%)
Mutual labels:  npm
Tbify
使用淘宝镜像运行命令: tbify [nvm|npm|npx|yarn|pnpm|...]
Stars: ✭ 153 (-2.55%)
Mutual labels:  npm
Verdaccio
📦🔐 A lightweight Node.js private proxy registry
Stars: ✭ 12,667 (+7968.15%)
Mutual labels:  npm
Webpages To Ebook
Create an EPUB from a list of URLs. Standing on the shoulders of Wget, Readability and Pandoc.
Stars: ✭ 155 (-1.27%)
Mutual labels:  npm
Wallutils
🌆 Utilities for handling monitors, resolutions, wallpapers and timed wallpapers
Stars: ✭ 145 (-7.64%)
Mutual labels:  module
React Native Story
React native instagram story
Stars: ✭ 144 (-8.28%)
Mutual labels:  npm
Ndm
💻 npm desktop manager https://720kb.github.io/ndm
Stars: ✭ 1,904 (+1112.74%)
Mutual labels:  npm
Backport
A simple CLI tool that automates the process of backporting commits on a GitHub repo
Stars: ✭ 154 (-1.91%)
Mutual labels:  webhooks
Lighthouse Badges
🚦Generate badges (shields.io) based on Lighthouse performance.
Stars: ✭ 150 (-4.46%)
Mutual labels:  npm

node-webhooks Build Status NPM Version Coverage Status JavaScript Style Guide Dependency Status Patreon donate button

What WebHooks are used for

Webhooks are "user-defined HTTP callbacks". They are usually triggered by some event, such as pushing code to a repository or a comment being posted to a blog. When that event occurs, the source site makes an HTTP request to the URI configured for the webhook. Users can configure them to cause events on one site to invoke behaviour on another. The action taken may be anything. Common uses are to trigger builds with continuous integration systems or to notify bug tracking systems. Since they use HTTP, they can be integrated into web services without adding new infrastructure.

Install

npm install node-webhooks --save

Supporting Node.js 0.12 or above.

How it works

When a webHook is triggered it will send an HTTPS POST request to the attached URLs, containing a JSON-serialized Update (the one specified when you call the trigger method).

Debug

This module makes use of the popular debug package. Use the env variable to enable debug: DEBUG=node-webhooks. To launch the example and enable debug: DEBUG=node-webhooks node example.js

Usage

// Initialize WebHooks module.
var WebHooks = require('node-webhooks')

// Initialize webhooks module from on-disk database
var webHooks = new WebHooks({
    db: './webHooksDB.json', // json file that store webhook URLs
    httpSuccessCodes: [200, 201, 202, 203, 204], //optional success http status codes
})

// Alternatively, initialize webhooks module with object; changes will only be
// made in-memory
webHooks = new WebHooks({
    db: {"addPost": ["http://localhost:9100/posts"]}, // just an example
})

// sync instantation - add a new webhook called 'shortname1'
webHooks.add('shortname1', 'http://127.0.0.1:9000/prova/other_url').then(function(){
	// done
}).catch(function(err){
	console.log(err)
})

// add another webHook
webHooks.add('shortname2', 'http://127.0.0.1:9000/prova2/').then(function(){
	// done
}).catch(function(err){
	console.log(err)
});

// remove a single url attached to the given shortname
// webHooks.remove('shortname3', 'http://127.0.0.1:9000/query/').catch(function(err){console.error(err);})

// if no url is provided, remove all the urls attached to the given shortname
// webHooks.remove('shortname3').catch(function(err){console.error(err);})

// trigger a specific webHook
webHooks.trigger('shortname1', {data: 123})
webHooks.trigger('shortname2', {data: 123456}, {header: 'header'}) // payload will be sent as POST request with JSON body (Content-Type: application/json) and custom header

Available events

We're using an event emitter library to expose request information on webHook trigger.

var webHooks = new WebHooks({
    db: WEBHOOKS_DB,
    DEBUG: true
})

var emitter = webHooks.getEmitter()

emitter.on('*.success', function (shortname, statusCode, body) {
    console.log('Success on trigger webHook' + shortname + 'with status code', statusCode, 'and body', body)
})

emitter.on('*.failure', function (shortname, statusCode, body) {
    console.error('Error on trigger webHook' + shortname + 'with status code', statusCode, 'and body', body)
})

This makes possible checking if a webHook trigger was successful or not getting request information such as status code or response body.

The format for the events is built as eventName.result. The choosen library eventemitter2 provides a lot of freedom for listening events. For example:

  • eventName.success
  • eventName.failure
  • eventName.*
  • *.success
  • *.*

API examples

webHooks are useful whenever you need to make sure that an external service get updates from your app. You can easily develop in your APP this kind of webHooks entry-points.

  • GET /api/webhook/get Return the whole webHook DB file.

  • GET /api/webhook/get/[WebHookShortname] Return the selected WebHook.

  • POST /api/webhook/add/[WebHookShortname] Add a new URL for the selected webHook. Requires JSON params:

  • GET /api/webhook/delete/[WebHookShortname] Remove all the urls attached to the selected webHook.

  • POST /api/webhook/delete/[WebHookShortname] Remove only one single url attached to the selected webHook. A json body with the url parameter is required: { "url": "http://..." }

  • POST /api/webhook/trigger/[WebHookShortname] Trigger a webHook. It requires a JSON body that will be turned over to the webHook URLs. You can also provide custom headers.

Author

Rocco Musolino - @roccomuso

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].