Plack::Middleware::Throttle - A Plack Middleware for rate-limiting
    incoming HTTP requests.
  my $handler = builder {
    enable "Throttle::Hourly",
        max     => 2,
        backend => Plack::Middleware::Throttle::Backend::Hash->new(),
        path    => qr{^/api};
    sub { [ '200', [ 'Content-Type' => 'text/html' ], ['hello world'] ] };
  };
This is a "Plack" middleware
    that provides logic for rate-limiting incoming HTTP requests to Rack
    applications.
This middleware provides three ways to handle throttling on
    incoming requests :
  - Hourly
- How many requests an host can do in one hour. The counter is reseted each
      hour.
- Daily
- How many requets an host can do in one hour. The counter is reseted each
      day.
- Interval
- Which interval of time an host must respect between two request.
  - code
- HTTP code returned in the response when the limit have been exceeded. By
      default 503.
- message
- HTTP message returned in the response when the limit have been exceeded.
      By defaylt "Over rate limit".
- backend
- A cache object to store sessions informations.
    
      backend => Redis->new(server => '127.0.0.1:6379');
    or   backend => Cache::Memcached->new(servers => ["10.0.0.15:11211", "10.0.0.15:11212"]);
    The cache object must implement get, set and
        incr methods. By default, you can use
        "Plack::Middleware::Throttle::Backend::Hash". By default, if no backend is specified,
        Plack::Middleware::Throttle::Backend::Hash is used. 
- key_prefix
- Key to prefix sessions entry in the cache.
- path
- URL pattern or a callback to match request to throttle. If no path is
      specified, the whole application will be throttled.
- white_list
- An arrayref of hosts to put in a white list.
- black_list
- An arrayref of hosts to put in a black list.
franck cuny <franck@lumberjaph.net>
This library is free software; you can redistribute it and/or
    modify it under the same terms as Perl itself.