node package manager

Introducing npm Enterprise add-ons. Integrate third-party dev tools into npm…

gallop

Polls REST APIs for changes.

Gallop

Gallop polls REST APIs at particular intervals to listen for changes.

Gallop is available on the NPM registry.

npm install gallop
var gallop = require('gallop')({
  interval: 10
});
 
// Add a target. 
gallop.subscribe('//api-endpoint.provider.com/api', null, function(err, result, httpResponse){
  if(err){
    return console.error(err);
  }
  console.log(result);
})
 
// Start listening. 
gallop.start();

Requiring Gallop exposes a Gallop constructor. This object serves as a daemon which listens to requests in the background. Arguments:

  • options -- An optional options object with keys:
    • interval -- The polling interval in milliseconds. Defaults to 1 minute.
var Gallop = require('gallop');
 
var daemon = new Gallop({
  interval: 500
});

A Gallop daemon subscribes to targets, which are composed of a REST API URL, an options object for the request, and a callback that fires whenever the response from that API endpoint changes. Arguments:

  • url -- A string endpoint URL
  • options -- An options object for the request -- see documentation for Restler's options
  • callback -- A callback that takes err, result, and httpResponse to be called whenever the data changes
daemon.subscribe('//api-endpoint.provider.com/api', {
  method: 'GET',
  query: {
    api_key: 'some API key',
    some_field: 'some data for the field'
    // ... 
  }
}, function(err, result, httpResponse) {
  if (err) {
    return console.error(err);
  }
  console.log(result);
});

subscribe returns a target ID, which can be passed to unsubscribe to remove the target.

// Save the target ID. 
var id = daemon.subscribe( /* ... */ );
 
// Unsubscribe from the target. 
daemon.unsubscribe(id);

The Gallop daemon can start and stop; stopping in the middle of the polling cycle will complete the current cycle.

daemon.start();
 
// Some time later... 
daemon.stop();

© 2013 Lehao Zhang. Released under the terms of the MIT license.