Fancy-Middleware
view release on metacpan or search on metacpan
lib/Fancy/Middleware.pm view on Meta::CPAN
package Fancy::Middleware;
BEGIN {
$Fancy::Middleware::VERSION = '1.101680';
}
use MooseX::Declare;
#ABSTRACT: Provides alternate implementation of Plack::Middleware in a Moose Role
role Fancy::Middleware
{
use POEx::Types::PSGIServer(':all');
use MooseX::Types::Moose(':all');
has app => (is => 'ro', isa => CodeRef, required => 1);
has response => (is => 'ro', isa => PSGIResponse, writer => 'set_response');
has env => (is => 'ro', isa => HashRef, writer => 'set_env');
method wrap(ClassName $class: CodeRef $app, @args)
{
my $self = $class->new(app => $app, @args);
return $self->to_app;
}
method call(HashRef $env)
{
$self->set_env($env);
$self->preinvoke();
$self->invoke();
$self->postinvoke();
return $self->response;
}
method preinvoke()
{
return;
}
method invoke()
{
$self->set_response(($self->app)->($self->env));
}
method postinvoke()
{
return;
}
method to_app()
{
return sub { $self->call(@_) };
}
}
1;
=pod
=head1 NAME
Fancy::Middleware - Provides alternate implementation of Plack::Middleware in a Moose Role
=head1 VERSION
version 1.101680
=head1 SYNOPSIS
use MooseX::Declare;
( run in 1.635 second using v1.01-cache-2.11-cpan-39bf76dae61 )