NAME
    Plack::Middleware::Cerberus - Include geo, time zone, user-agent and
    throttling from App::Cerberus

VERSION
    version 0.04

SYNOPSIS
        use Plack::Builder;

        my $app = sub {
            my $env = shift;
            my $time_zone = $env->{'plack.cerberus'}{tz}{name};
            ...
        };

        builder {
            enable 'Cerberus', servers => 'http://localhost:5001/';
            $app;
        };

DESCRIPTION
    Plack::Middleware::Cerberus adds metadata from an App::Cerberus server
    to the $env as "$env->{'plack.cerberus'}".

    For instance:

    *   Geo-location

    *   Time zone

    *   User-agent info

    *   Are they a spider?

    *   Are they making too many requests? Should we throttle them?

    It can also be configured to throttle or ban IP address ranges with
    App::Cerberus::Plugin::Throttle.

CONFIG
    The basic configuration ("servers" and "timeout") are passed to "new()"
    in App::Cerberus::Client.

        enable 'Cerberus',
            servers  => 'http://localhost:5001/',
            timeout  => 0.1;

    Or

        enable 'Cerberus',
            servers  => [ 'http://host1:5001/', 'http://host2:5001/']
            timeout  => 0.1;

    If you are using the App::Cerberus::Plugin::Throttle plugin, then you
    can also configure:

        enable 'Cerberus',
            servers => 'http://localhost:5001/',
            enforce => 1,
            log_as  => 'warn';

    If "log_as" is one of "debug", "info", "warn", "error" or "fatal", then
    Throttle messages will be logged at that level. It defaults to "warn".
    If no logger is configured, then "log_as" is ignored and it always
    warns.

    If "enforce" is true, then banned IP addresses will receive a "403
    Forbidden" response and throttled users a "503 Service Unavailable"
    response, with a "Retry-After: $seconds" header.

ACCESSING CERBERUS INFO
    The $env variable will contain a key 'plack.cerberus' with any data that
    App::Cerberus has returned, for instance:

        my $app = sub {
            my $env        = shift;
            my $geo_info   = $env->{'plack.cerberus'}{geo};
            my $time_zone  = $env->{'plack.cerberus'}{tz};
            my $user_agent = $env->{'plack.cerberus'}{ua};
            my $throttle   = $env->{'plack.cerberus'}{throttle};
        };

SEE ALSO
    *   App::Cerberus

    *   Dancer::Plugin::Cerberus

SUPPORT
    You can find documentation for this module with the perldoc command.

        perldoc Plack::Middleware::Cerberus

    You can also look for information at:

    *   GitHub

        <http://github.com/clintongormley/Plack-Middleware-Cerberus>

    *   CPAN Ratings

        <http://cpanratings.perl.org/d/Plack-Middleware-Cerberus>

    *   Search MetaCPAN

        <https://metacpan.org/module/Plack::Middleware::Cerberus>

AUTHOR
    Clinton Gormley <drtech@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2012 by Clinton Gormley.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

