diff options
| author | franck cuny <franck@lumberjaph.net> | 2010-04-01 17:02:14 +0200 |
|---|---|---|
| committer | franck cuny <franck@lumberjaph.net> | 2010-04-01 17:02:14 +0200 |
| commit | 98f523f80cf0917ba51c765fd3d5199aa5d3ae0e (patch) | |
| tree | 99ff608c6289eff1ac2a922b830b9ee2d9963eaa /lib/Plack/Middleware/Throttle/Interval.pm | |
| parent | import old Plack::Middleware::APIRateLimit (renamed as miyagawa's suggestion)... (diff) | |
| download | plack-middleware-throttle-98f523f80cf0917ba51c765fd3d5199aa5d3ae0e.tar.gz | |
handle black and white list, add support to interval
Diffstat (limited to '')
| -rw-r--r-- | lib/Plack/Middleware/Throttle/Interval.pm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/Plack/Middleware/Throttle/Interval.pm b/lib/Plack/Middleware/Throttle/Interval.pm index cbe7d59..3e61220 100644 --- a/lib/Plack/Middleware/Throttle/Interval.pm +++ b/lib/Plack/Middleware/Throttle/Interval.pm @@ -3,10 +3,29 @@ package Plack::Middleware::Throttle::Interval; use Moose; extends 'Plack::Middleware::Throttle'; +has min => (is => 'rw', isa => 'Int', default => 0, lazy => 1); + sub allowed { + my ($self, $key) = @_; + + my $t1 = time(); + my $t0 = $self->backend->get($key); + $self->backend->set($key, $t1); + + if (!$t0 || ($t1 - $t0) > $self->min) { + return 1; + }else{ + return 0; + } } sub cache_key { + my ( $self, $env ) = @_; + $self->client_identifier($env); +} + +sub reset_time { + time + 1; } 1; |
