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