X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerialize%2FData%2FSerializer.pm;h=cd885c5637eb3b83b3b83f90068436283e445895;hb=fc97153d494ce8d5dbdaffd2c91925bc3b4de04c;hp=24d88f134aa3c4ab4819bdebd7b49c99e58ac1a5;hpb=c9cf872989c719198a088b65c9b6db1a94364c96;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/Serialize/Data/Serializer.pm b/lib/Catalyst/Action/Serialize/Data/Serializer.pm index 24d88f1..cd885c5 100644 --- a/lib/Catalyst/Action/Serialize/Data/Serializer.pm +++ b/lib/Catalyst/Action/Serialize/Data/Serializer.pm @@ -1,46 +1,18 @@ -# -# Catalyst::Action::Serialize::Data::Serializer -# Created by: Adam Jacob, Marchex, -# -# $Id$ - package Catalyst::Action::Serialize::Data::Serializer; - -use strict; -use warnings; - -use base 'Catalyst::Action'; +use Moose; +extends 'Catalyst::Action'; +with 'Catalyst::ActionRole::Serialize'; use Data::Serializer; +use namespace::clean -except => 'meta'; -sub execute { - my $self = shift; - my ( $controller, $c, $serializer ) = @_; - - my $stash_key = ( - $controller->{'serialize'} ? - $controller->{'serialize'}->{'stash_key'} : - $controller->{'stash_key'} - ) || 'rest'; - my $sp = $serializer; - $sp =~ s/::/\//g; - $sp .= ".pm"; - eval { - require $sp - }; - if ($@) { - $c->log->info("Could not load $serializer, refusing to serialize: $@"); - return 0; - } - my $dso = Data::Serializer->new( serializer => $serializer ); - my $data; - eval { - $data = $dso->raw_serialize($c->stash->{$stash_key}); - }; - if ($@) { - return $@; - } - $c->response->output( $data ); - return 1; +sub serialize { + my ($self, $data, $c, $serializer) = @_; + unless (eval "use $serializer; 1") { + $c->log->info("Could not load $serializer, refusing to serialize: $@"); + return 0; + } + my $d = Data::Serializer->new(serializer => $serializer); + return $d->raw_serialize($data); } 1;