convert to Dist::Zilla
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / View.pm
CommitLineData
9a76221e 1package Catalyst::Action::Serialize::View;
930013e6 2use Moose;
3use namespace::autoclean;
9a76221e 4
930013e6 5extends 'Catalyst::Action';
9a76221e 6
7sub execute {
8 my $self = shift;
9 my ( $controller, $c, $view ) = @_;
faf5c20b 10
96eccfeb 11 # Views don't care / are not going to render an entity for 3XX
12 # responses.
13 return 1 if $c->response->status =~ /^(?:204|3\d\d)$/;
14
faf5c20b 15 my $stash_key = (
07682cbc 16 $controller->{'serialize'} ?
17 $controller->{'serialize'}->{'stash_key'} :
18 $controller->{'stash_key'}
faf5c20b 19 ) || 'rest';
9a76221e 20
21 if ( !$c->view($view) ) {
22 $c->log->error("Could not load $view, refusing to serialize");
58c1c5f5 23 return;
9a76221e 24 }
25
6d4a379f 26 if ($c->view($view)->process($c, $stash_key)) {
27 return 1;
28 } else {
29 # This is stupid. Please improve it.
30 my $error = join("\n", @{ $c->error }) || "Error in $view";
31 $error .= "\n";
32 $c->clear_errors;
33 die $error;
34 }
9a76221e 35}
36
24748286 37__PACKAGE__->meta->make_immutable;
38
9a76221e 391;