Skip to content

superfeedr/superfeedr-hapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A module for Hapi.js Node.js web server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published