0.0.2 • Published 10 years ago

hapi-superfeedr v0.0.2

Weekly downloads
-
License
BSD
Repository
-
Last release
10 years ago

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);
  }
});
```javascript

Later, anywhere your app you can invoke the following:

```javascript
// 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.