From 397a9dc9fcfd3e61de12bcf6e7e39ca660155348 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Tue, 30 Mar 2010 15:36:02 +0200 Subject: update POD, fix redis backend --- lib/Plack/Middleware/APIRateLimit.pm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'lib/Plack/Middleware/APIRateLimit.pm') diff --git a/lib/Plack/Middleware/APIRateLimit.pm b/lib/Plack/Middleware/APIRateLimit.pm index 5819bee..6a86446 100644 --- a/lib/Plack/Middleware/APIRateLimit.pm +++ b/lib/Plack/Middleware/APIRateLimit.pm @@ -1,5 +1,8 @@ package Plack::Middleware::APIRateLimit; +use strict; +use warnings; + use Carp; use Scalar::Util; use Plack::Util; @@ -54,6 +57,11 @@ sub call { $self->backend->incr($key); my $request_done = $self->backend->get($key); + if (!$request_done) { + $self->backend->set($key, 1); + $request_done = 1; + } + return $self->over_rate_limit() if $request_done > $self->requests_per_hour; @@ -117,6 +125,9 @@ Plack::Middleware::APIRateLimit - A Plack Middleware for API Throttling enable "APIRateLimit", requests_per_hour => 2, backend => "Hash"; # or enable "APIRateLimit", requests_per_hour => 2, backend => ["Redis", {port => 6379, server => '127.0.0.1'}]; + # or + enable "APIRateLimit", request_per_hour => 2, backend => Redis->new(server => '127.0.0.1:6379'); + sub { [ '200', [ 'Content-Type' => 'text/html' ], ['hello world'] ] }; }; @@ -151,7 +162,8 @@ When will the counter be reseted (in epoch) =item B Which backend to use. Currently only Hash and Redis are supported. If no -backend is specified, Hash is used by default. +backend is specified, Hash is used by default. Backend must implement B, +B and B. =item B -- cgit v1.2.3