summary refs log tree commit diff
path: root/lib/Plack/Middleware/Throttle/Limiter.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Plack/Middleware/Throttle/Limiter.pm')
-rw-r--r--lib/Plack/Middleware/Throttle/Limiter.pm21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/Plack/Middleware/Throttle/Limiter.pm b/lib/Plack/Middleware/Throttle/Limiter.pm
new file mode 100644
index 0000000..626732d
--- /dev/null
+++ b/lib/Plack/Middleware/Throttle/Limiter.pm
@@ -0,0 +1,21 @@
+package Plack::Middleware::Throttle::Limiter;
+
+use Moose;
+extends 'Plack::Middleware::Throttle';
+
+sub request_done {
+    my ( $self, $env ) = @_;
+    my $key = $self->cache_key($env);
+
+    $self->backend->incr($key);
+
+    my $request_done = $self->backend->get($key);
+
+    if ( !$request_done ) {
+        $self->backend->set( $key, 1 );
+    }
+
+    $request_done;
+}
+
+1;