0.1.1 • Published 7 years ago

@ethanfrogers/hapi-limiter v0.1.1

Weekly downloads
-
License
MPL-2.0
Repository
github
Last release
7 years ago

Build Status Coverage Status npm version dependencies

npm stats

hapi-limiter

Rate limiting plugin for Hapi, inspired by hapi-ratelimit, but using hapi's builtin server cache interface.

Installation

npm install hapi-limiter

Usage

server.register(require('hapi-limiter'), function(err) {
  Hoek.assert(!err, 'uh oh!');
});

server.route({
  path: '/foo',
  method: 'get',
  handler: function(request, reply) {
    reply('remaining requests: ', request.plugins[hapi-limiter].remaining);
  },
  config:{
    plugins: {
      'hapi-limiter': {
        enable: true
      }
    }
  }
});

Configuration

Plugin

These settings are global, and applicable values are applied as defaults to each rate limted route

SettingDescriptionDefault
ttlLength of time that a limit should be enforced for, specified in miliseconds1000 60 15
limitMaximum allowed API calls per period specified by ttl15
cacheClientA Hapi CacheClient, or similarly functioning interface.undefined
cacheA Hapi Catbox policydefault ttl and segment, using default server cache
generateKeyFuncA function with the signature function(request) {} that returns the caching keyreturns method + api path + ip address

Route Configuration

SettingDescriptionDefault
enableboolean or truthy value, indicating if route is to be rate limitedundefined
ttlLength of time that a limit should be enforced for, specified in miliseconds1000 60 15
limitMaximum allowed API calls per period specified by ttl15