stuff
This commit is contained in:
48
lib/CW.pm
48
lib/CW.pm
@@ -6,6 +6,9 @@ package CW;
|
||||
|
||||
use Moo;
|
||||
use Plack::Request;
|
||||
use Try::Tiny;
|
||||
|
||||
use feature 'state';
|
||||
|
||||
use CW::Plack::Request;
|
||||
use CW::Plack::Response;
|
||||
@@ -47,11 +50,52 @@ sub app {
|
||||
my $route = $match->{route};
|
||||
my $pkg = $route->pkg;
|
||||
my $action = $route->action;
|
||||
$pkg->new( dbh => $self->dbh )->$action( $request, $response );
|
||||
|
||||
my %params = %$match;
|
||||
delete $params{route};
|
||||
|
||||
try {
|
||||
$pkg->new(
|
||||
dbh => $self->dbh,
|
||||
params => \%params,
|
||||
request => $request,
|
||||
response => $response
|
||||
)->$action();
|
||||
}
|
||||
catch {
|
||||
my $error = $_;
|
||||
|
||||
use DDP;
|
||||
p $error;
|
||||
|
||||
state $show_errors = $self->environment ne 'prod';
|
||||
if ( ref($error) && ref($error) eq 'HASH' && $error->{status} )
|
||||
{
|
||||
$response->status( $error->{status} );
|
||||
$response->template(
|
||||
"Error::" . $error->{status},
|
||||
{
|
||||
show_errors => $show_errors,
|
||||
error => $error
|
||||
}
|
||||
);
|
||||
}
|
||||
else {
|
||||
$response->status(500);
|
||||
$response->template(
|
||||
"Error::500",
|
||||
{
|
||||
show_errors => $show_errors,
|
||||
error => $error
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
$response->status(404);
|
||||
$response->body("404 not found");
|
||||
$response->template("Error::404");
|
||||
}
|
||||
|
||||
return $response->finalize;
|
||||
|
||||
Reference in New Issue
Block a user