refactor serialize actions
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / Data / Serializer.pm
index 24d88f1..cd885c5 100644 (file)
@@ -1,46 +1,18 @@
-#
-# Catalyst::Action::Serialize::Data::Serializer
-# Created by: Adam Jacob, Marchex, <adam@hjksolutions.com>
-#
-# $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;