A module for Hapi.js Node.js web server
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
LICENSE
README.md
package.json
superfeedr.js

README.md

superfeedr-hapi

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

Usage

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.