hapi-tattle

0.2.0 • Public • Published

Tattle Plugin for Hapi

npm version Build Status Coverage Status

A Hapi plugin that reports certain requests to a central HTTP service. Works with Hapi version 8 or later.

npm install --save hapi-tattle

Register the plugin and each request for which filterFunc returns true will result in a call to url containing information about the request. The call occurs as a onPreResponse extension and doesn't interrupt the response. It also registers a "tail" event that resolves after the external service responds.

var Hapi = require('hapi');
 
var server = new Hapi.Server();
server.connection({
  host: 'localhost',
  port: 8000
});
 
server.register({
  register: require('hapi-tattle'),
  options: {
    url: 'https://my.app.com/transactions',
    filterFunc: function(req){
      return req.route.settings.app.isTransaction;
    }
  }
}, function(){
  server.start();
});
 
server.route({
  method: 'GET',
  url: '/tracked',
  config: {
    app: {
      isTransaction: true
    }
  },
  method: function(req, reply){
    reply('ok');
  }
})
 
server.route({
  method: 'GET',
  url: '/untracked',
  config: {
    app: {
      isTransaction: false
    }
  },
  method: function(req, reply){
    reply('ok');
  }
})

With the above, information about calls to /tracked will be posted to https://my.app.com/transactions, and those to /untracked will not be.

Plugin Options

The following options are available when registering the plugin:

  • 'url' (required) - the URL to call for authentication.
  • 'auth' - authentication object that will be included with the request to the external service. Can be an object including username and password or null to not authenticate the request. Defaults to null.
  • 'filterFunc' - function that will be passed the request object and, if it returns true, the request will be reported. Otherwise the report will be skipped. Defaults to a function that always returns true.
  • 'objectName' - the name of the object that will be sent to the external service. Defaults to "transaction".
  • 'otherData' - static object to be merged with the transaction object being sent. Defaults to null.

Readme

Keywords

Package Sidebar

Install

npm i hapi-tattle

Weekly Downloads

1

Version

0.2.0

License

MIT

Last publish

Collaborators

  • pkinney