Change all classes to Moose
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / Data / Serializer.pm
1 package Catalyst::Action::Serialize::Data::Serializer;
2
3 use Moose;
4 use namespace::autoclean;
5
6 extends 'Catalyst::Action';
7 use Data::Serializer;
8
9 sub execute {
10     my $self = shift;
11     my ( $controller, $c, $serializer ) = @_;
12
13     my $stash_key = (
14             $controller->{'serialize'} ?
15                 $controller->{'serialize'}->{'stash_key'} :
16                 $controller->{'stash_key'} 
17         ) || 'rest';
18     my $sp = $serializer;
19     $sp =~ s/::/\//g;
20     $sp .= ".pm";
21     eval {
22         require $sp
23     };
24     if ($@) {
25         $c->log->info("Could not load $serializer, refusing to serialize: $@");
26         return 0;
27     }
28     my $dso = Data::Serializer->new( serializer => $serializer );
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 );
37     return 1;
38 }
39
40 1;