Updating my email address
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Deserialize / Data / Serializer.pm
CommitLineData
7ad87df9 1#
2# Catalyst::Action::Deserialize::Data::Serializer.pm
be3c588a 3# Created by: Adam Jacob, Marchex, <adam@hjksolutions.com>
7ad87df9 4# Created on: 10/12/2006 03:00:32 PM PDT
5#
6# $Id$
7
8package Catalyst::Action::Deserialize::Data::Serializer;
9
10use strict;
11use warnings;
12
13use base 'Catalyst::Action';
14use Data::Serializer;
15
16sub execute {
17 my $self = shift;
18 my ( $controller, $c, $serializer ) = @_;
eccb2137 19
e601adda 20 my $sp = $serializer;
21 $sp =~ s/::/\//g;
22 $sp .= ".pm";
23 eval {
24 require $sp
25 };
26 if ($@) {
d4611771 27 $c->log->debug("Could not load $serializer, refusing to serialize: $@")
28 if $c->debug;
e601adda 29 return 0;
30 }
7ad87df9 31 my $body = $c->request->body;
32 if ($body) {
33 my $rbody;
eccb2137 34 if ( -f $c->request->body ) {
35 open( BODY, "<", $c->request->body );
36 while ( my $line = <BODY> ) {
7ad87df9 37 $rbody .= $line;
38 }
39 close(BODY);
40 }
eccb2137 41 my $dso = Data::Serializer->new( serializer => $serializer );
e601adda 42 my $rdata;
43 eval {
44 $rdata = $dso->raw_deserialize($rbody);
45 };
46 if ($@) {
47 return $@;
48 }
7ad87df9 49 $c->request->data($rdata);
50 } else {
eccb2137 51 $c->log->debug(
d4611771 52 'I would have deserialized, but there was nothing in the body!')
53 if $c->debug;
7ad87df9 54 }
e601adda 55 return 1;
eccb2137 56}
7ad87df9 57
581;