v1.16
[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
cc188065 7# VERSION
6edee33e 8
9a76221e 9sub execute {
10 my $self = shift;
11 my ( $controller, $c, $view ) = @_;
faf5c20b 12
96eccfeb 13 # Views don't care / are not going to render an entity for 3XX
14 # responses.
15 return 1 if $c->response->status =~ /^(?:204|3\d\d)$/;
16
faf5c20b 17 my $stash_key = (
07682cbc 18 $controller->{'serialize'} ?
19 $controller->{'serialize'}->{'stash_key'} :
20 $controller->{'stash_key'}
faf5c20b 21 ) || 'rest';
9a76221e 22
23 if ( !$c->view($view) ) {
24 $c->log->error("Could not load $view, refusing to serialize");
58c1c5f5 25 return;
9a76221e 26 }
27
6d4a379f 28 if ($c->view($view)->process($c, $stash_key)) {
29 return 1;
30 } else {
31 # This is stupid. Please improve it.
32 my $error = join("\n", @{ $c->error }) || "Error in $view";
33 $error .= "\n";
34 $c->clear_errors;
35 die $error;
36 }
9a76221e 37}
38
24748286 39__PACKAGE__->meta->make_immutable;
40
9a76221e 411;