NAME
Plack::Middleware::WURFL::ScientiaMobile - Query the ScientiaMobile webservice in middleware
SYNOPSIS
use Plack::Builder;
builder {
enable 'WURFL::ScientiaMobile', config => {
api_key => '...',
};
$app;
};
DESCRIPTION
This middleware is intended to act as a bridge between the WURFL ScientiaMobile webservice and PSGI-based web applications. It does two things: it processes each incoming HTTP request through the detectDevice()
method of Net::WURFL::ScientiaMobile and it places the pre-populated ScientiaMobile object inside the $env
structure that is passed to your web application. You can easily access it from your web framework of choice and apply your device-specific logic.
If you configure the ScientiaMobile object with a Cache
cache provider, the middleware will be smart enough to interact with it for reading and writing cookies.
use Plack::Builder;
builder {
enable 'WURFL::ScientiaMobile', config => {
api_key => '...',
cache => Net::WURFL::ScientiaMobile::Cache::Cookie->new,
};
$app;
};
ARGUMENTS
This middleware accepts the following arguments.
config
This argument is required. It must be a hashref containing the configuration options for the Net::WURFL::ScientiaMobile client object. The only required option is api_key
, but check the documentation for Net::WURFL::ScientiaMobile to learn about all possible options.
SUBROUTINES
PSGI_KEY
Returns the PSGI $env
key under which you'd expect to find either an instance of Net::WURFL::ScientiaMobile (pre-populated with the device capabilities) or an exception object.
get_from_env
Given a Plack $env
, returns the Net::WURFL::ScientiaMobile object containing the device capabilities. If the call to detectDevice()
threw an exception instead of succeeding, this method returns undef.
For example, in your web application:
use Plack::Middleware::WURFL::ScientiaMobile;
sub my_handler {
...
my $env = ...; # your web framework provides this
my $scientiamobile = Plack::Middleware::WURFL::ScientiaMobile->get_from_env($env);
if (!$scientiamobile) {
my $error = Plack::Middleware::WURFL::ScientiaMobile->get_error_from_env($env);
....
}
....
}
Refer to the documentation of your web framework to learn how to access $env
. For example, Catalyst provides it in $ctx->request->env
, Dancer provides it in request->env
, Mojo provides it in $tx->req->env
.
get_error_from_env
Given a Plack $env
, returns the Exception::Class object representing the failure. If no exception was caught, undef is returned.
Refer to the documentation of Net::WURFL::ScientiaMobile for an explanation of possible exceptions.
SEE ALSO
Plack, Plack::Middleware, Net::WURFL::ScientiaMobile
AUTHOR
Alessandro Ranellucci <aar@cpan.org>
COPYRIGHT & LICENSE
Copyright 2012, ScientiaMobile, Inc.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.