summaryrefslogblamecommitdiff
path: root/lib/Plack/Middleware/APIRateLimit/Backend/Redis.pm
blob: e647f6aac0833fcb0281c8ed43e69b72a2a6e2d1 (plain) (tree)










































                                                        
package Plack::Middleware::APIRateLimit::Backend::Redis;

use Moose;
extends 'Plack::Middleware::APIRateLimit::Backend';

use AnyEvent::Redis;

has store => (
    is      => 'rw',
    isa     => 'AnyEvent::Redis',
    lazy    => 1,
    default => sub {
        return AnyEvent::Redis->new(
            host => '127.0.0.1',
            port => 6378,
        );
    }
);

sub BUILD {
    my $self = shift;
    if (scalar @_) {
        $self->store(AnyEvent::Redis->new(@_));
    }
    return $self;
}

sub get {
    my ( $self, $key ) = @_;
    my $val = $self->store->get($key)->recv;
    if ( !$val ) {
        $self->store->set( $key => 1 )->recv;
        $val = 1;
    }
    return $val;
}

sub incr {
    my ($self, $key) = @_;
    return $self->store->incr($key)->recv;
}

1;