Cherry pick everything bar the use parent change from 25d49c2, fixing RT#46680
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / Data / Serializer.pm
CommitLineData
7ad87df9 1package Catalyst::Action::Serialize::Data::Serializer;
2
3use strict;
4use warnings;
5
6use base 'Catalyst::Action';
7use Data::Serializer;
8
9sub execute {
10 my $self = shift;
11 my ( $controller, $c, $serializer ) = @_;
12
faf5c20b 13 my $stash_key = (
07682cbc 14 $controller->{'serialize'} ?
15 $controller->{'serialize'}->{'stash_key'} :
16 $controller->{'stash_key'}
faf5c20b 17 ) || 'rest';
e601adda 18 my $sp = $serializer;
19 $sp =~ s/::/\//g;
20 $sp .= ".pm";
21 eval {
22 require $sp
23 };
24 if ($@) {
faf5c20b 25 $c->log->info("Could not load $serializer, refusing to serialize: $@");
e601adda 26 return 0;
27 }
eccb2137 28 my $dso = Data::Serializer->new( serializer => $serializer );
e601adda 29 my $data;
30 eval {
31 $data = $dso->raw_serialize($c->stash->{$stash_key});
32 };
33 if ($@) {
34 return $@;
35 }
36 $c->response->output( $data );
7ad87df9 37 return 1;
eccb2137 38}
7ad87df9 39
401;