Commit | Line | Data |
3fea05b9 |
1 | package Catalyst::Action::Serialize::View; |
2 | use Moose; |
3 | use namespace::autoclean; |
4 | |
5 | extends 'Catalyst::Action'; |
6 | |
7 | our $VERSION = '0.85'; |
8 | $VERSION = eval $VERSION; |
9 | |
10 | sub execute { |
11 | my $self = shift; |
12 | my ( $controller, $c, $view ) = @_; |
13 | |
14 | # Views don't care / are not going to render an entity for 3XX |
15 | # responses. |
16 | return 1 if $c->response->status =~ /^(?:204|3\d\d)$/; |
17 | |
18 | my $stash_key = ( |
19 | $controller->{'serialize'} ? |
20 | $controller->{'serialize'}->{'stash_key'} : |
21 | $controller->{'stash_key'} |
22 | ) || 'rest'; |
23 | |
24 | if ( !$c->view($view) ) { |
25 | $c->log->error("Could not load $view, refusing to serialize"); |
26 | return; |
27 | } |
28 | |
29 | if ($c->view($view)->process($c, $stash_key)) { |
30 | return 1; |
31 | } else { |
32 | # This is stupid. Please improve it. |
33 | my $error = join("\n", @{ $c->error }) || "Error in $view"; |
34 | $error .= "\n"; |
35 | $c->clear_errors; |
36 | die $error; |
37 | } |
38 | } |
39 | |
40 | 1; |