The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Plack::Middleware::BrowserDetector;
use strict;
use warnings;
use HTTP::BrowserDetect;
use parent 'Plack::Middleware';

sub call {
    my ($self, $env) = @_;
    $env->{'BrowserDetector.browser'} = HTTP::BrowserDetect->new($env->{HTTP_USER_AGENT});
    return $self->app->($env);
}

1;

__END__

=head1 NAME

Plack::Middleware::BrowserDetector - Plack middleware to identify browsers

=head1 SYNOPSIS

  # in your .psgi
  ...
  builder {
    enable 'BrowserDetector';
    $app;
  }

  # and after that in your aplication
  my $browser = $env->{'BrowserDetector.browser'}; # HTTP::BrowserDetect object

  # check if browser appears to be mobile device
  if ($browser->mobile) {
  }

  # check if browser appears to be chrome
  if ($browser->chrome) {
  }

=head1 DESCRIPTION

This Plack middleware sets a key in the PSGI environment which is
HTTP::BrowserDetect object. The HTTP::BrowserDetect determines Web browser,
version, and platform from an HTTP user agent string.

See also: L<Plack::Middleware::BotDetector>, L<HTTP::BrowserDetect>

=head1 AUTHOR

Dimitar Petrov <mitakaa@gmail.com>

=cut