A module for Hapi.js Node.js web server
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



This is a re-usable Hapi plugin for Superfeedr. It implements a small subset of PubSubHubbub API calls to allow the following:

  • subscribe
  • unsubscribe
  • handle notifications


var superfeedr = require('hapi-superfeedr');

var superfeedrOptions = {
  login: 'demo', // Superfeedr login
  password: 'ee72118e8a2a7939361fe48c478b9135', // Superfeedr token
  webhooks: {
    host: '14ab6330636c.b.passageway.io', // web accessible host of your application
    base: '/superfeedr', // base path for the webhook. make sure you use a unique base path to avoid route conflicts
    scheme: 'http', // can also be 'https'
    port: 80 // defaults to 80, but can be configured 

server.pack.register({plugin: superfeedr, options: superfeedrOptions},  function(err) {
  if (err) {
    console.error('Failed to load a plugin:', err);

Later, anywhere your app you can invoke the following:

// Handle notifications
server.plugins.superfeedr.on('notification', function(feed_id, payload, url, request) {
  // Save to database, send to user... etc
// Subscribe to a feed
// Takes the feed url, a unique feed id (primary key, ideally) and an set of options:
// - retrieve: yield the previous feed entries
// - format: atom or json
// - secret: a secret string used to compute an HMAC signature for secure notifications. (not implemented by this plugin, you'll have to handle it yourself)
server.plugins.superfeedr.subscribe(url, id, {retrieve: true, format: 'atom', 'secret': 'xxxx'}, function(error, body) {
      // if !error => success. Body will only have data if you used retrieve to subscribe   
// Unsubscribe from a feed
// Takes the feed url, a unique feed id (you need to use the same used for subscription)
server.plugins.superfeedr.unsubscribe(url, id, function(error) {
      // if !error => success.  

Warning: This is my very very first hapi project, so there are likely imperfections and even bugs. Please use with caution and feel free to fork and fix/improve. It also only implements a very small subset of Superfeedr features.