rename ActionRole::Serialize -> ActionRole::SerializeFormat
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Deserialize / Data / Serializer.pm
index ef43574..a87a015 100644 (file)
@@ -1,39 +1,19 @@
-#
-# Catalyst::Action::Deserialize::Data::Serializer.pm
-# Created by: Adam Jacob, Marchex, <adam@marchex.com>
-# Created on: 10/12/2006 03:00:32 PM PDT
-#
-# $Id$
-
 package Catalyst::Action::Deserialize::Data::Serializer;
-
-use strict;
-use warnings;
-
-use base 'Catalyst::Action';
+use Moose;
+extends 'Catalyst::Action';
+with 'Catalyst::ActionRole::DeserializeFormat';
 use Data::Serializer;
+use namespace::clean -except => 'meta';
 
-sub execute {
-    my $self = shift;
-    my ( $controller, $c, $serializer ) = @_;
-
-    my $body = $c->request->body;
-    if ($body) {
-        my $rbody;
-        if ( -f $c->request->body ) {
-            open( BODY, "<", $c->request->body );
-            while ( my $line = <BODY> ) {
-                $rbody .= $line;
-            }
-            close(BODY);
-        }
-        my $dso = Data::Serializer->new( serializer => $serializer );
-        my $rdata = $dso->raw_deserialize($rbody);
-        $c->request->data($rdata);
-    } else {
-        $c->log->debug(
-            'I would have deserialized, but there was nothing in the body!');
-    }
+sub deserialize {
+  my ($self, $content, $c, $serializer) = @_;
+  unless (eval "use $serializer; 1") {
+    $c->log->debug("Could not load $serializer, refusing to serialize: $@")
+      if $c->debug;
+    return 0;
+  }
+  my $d = Data::Serializer->new(serializer => $serializer);
+  return $d->raw_deserialize($content);
 }
 
 1;