Bump versions for release
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Deserialize / Data / Serializer.pm
CommitLineData
7ad87df9 1package Catalyst::Action::Deserialize::Data::Serializer;
2
930013e6 3use Moose;
4use namespace::autoclean;
7ad87df9 5
930013e6 6extends 'Catalyst::Action';
7ad87df9 7use Data::Serializer;
8
3bb36dca 9our $VERSION = '0.82';
f465980c 10$VERSION = eval $VERSION;
11
7ad87df9 12sub execute {
13 my $self = shift;
14 my ( $controller, $c, $serializer ) = @_;
eccb2137 15
e601adda 16 my $sp = $serializer;
17 $sp =~ s/::/\//g;
18 $sp .= ".pm";
19 eval {
20 require $sp
21 };
22 if ($@) {
d4611771 23 $c->log->debug("Could not load $serializer, refusing to serialize: $@")
24 if $c->debug;
e601adda 25 return 0;
26 }
7ad87df9 27 my $body = $c->request->body;
28 if ($body) {
29 my $rbody;
eccb2137 30 if ( -f $c->request->body ) {
31 open( BODY, "<", $c->request->body );
32 while ( my $line = <BODY> ) {
7ad87df9 33 $rbody .= $line;
34 }
35 close(BODY);
36 }
eccb2137 37 my $dso = Data::Serializer->new( serializer => $serializer );
e601adda 38 my $rdata;
39 eval {
40 $rdata = $dso->raw_deserialize($rbody);
41 };
42 if ($@) {
43 return $@;
44 }
7ad87df9 45 $c->request->data($rdata);
46 } else {
eccb2137 47 $c->log->debug(
d4611771 48 'I would have deserialized, but there was nothing in the body!')
49 if $c->debug;
7ad87df9 50 }
e601adda 51 return 1;
eccb2137 52}
7ad87df9 53
541;