Updating my email address
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / Data / Serializer.pm
1 #
2 # Catalyst::Action::Serialize::Data::Serializer
3 # Created by: Adam Jacob, Marchex, <adam@hjksolutions.com>
4 #
5 # $Id$
6
7 package Catalyst::Action::Serialize::Data::Serializer;
8
9 use strict;
10 use warnings;
11
12 use base 'Catalyst::Action';
13 use Data::Serializer;
14
15 sub execute {
16     my $self = shift;
17     my ( $controller, $c, $serializer ) = @_;
18
19     my $stash_key = (
20             $controller->config->{'serialize'} ?
21                 $controller->config->{'serialize'}->{'stash_key'} :
22                 $controller->config->{'stash_key'} 
23         ) || 'rest';
24     my $sp = $serializer;
25     $sp =~ s/::/\//g;
26     $sp .= ".pm";
27     eval {
28         require $sp
29     };
30     if ($@) {
31         $c->log->info("Could not load $serializer, refusing to serialize: $@");
32         return 0;
33     }
34     my $dso = Data::Serializer->new( serializer => $serializer );
35     my $data;
36     eval {
37        $data = $dso->raw_serialize($c->stash->{$stash_key});
38     };
39     if ($@) {
40         return $@;
41     } 
42     $c->response->output( $data );
43     return 1;
44 }
45
46 1;