Commit | Line | Data |
---|---|---|
9a76221e | 1 | package Catalyst::Action::Serialize::View; |
f5aa7d45 | 2 | |
930013e6 | 3 | use Moose; |
4 | use namespace::autoclean; | |
9a76221e | 5 | |
930013e6 | 6 | extends 'Catalyst::Action'; |
9a76221e | 7 | |
8 | sub 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 | 40 | 1; |