Change all classes to Moose
[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
9sub execute {
10 my $self = shift;
11 my ( $controller, $c, $serializer ) = @_;
eccb2137 12
e601adda 13 my $sp = $serializer;
14 $sp =~ s/::/\//g;
15 $sp .= ".pm";
16 eval {
17 require $sp
18 };
19 if ($@) {
d4611771 20 $c->log->debug("Could not load $serializer, refusing to serialize: $@")
21 if $c->debug;
e601adda 22 return 0;
23 }
7ad87df9 24 my $body = $c->request->body;
25 if ($body) {
26 my $rbody;
eccb2137 27 if ( -f $c->request->body ) {
28 open( BODY, "<", $c->request->body );
29 while ( my $line = <BODY> ) {
7ad87df9 30 $rbody .= $line;
31 }
32 close(BODY);
33 }
eccb2137 34 my $dso = Data::Serializer->new( serializer => $serializer );
e601adda 35 my $rdata;
36 eval {
37 $rdata = $dso->raw_deserialize($rbody);
38 };
39 if ($@) {
40 return $@;
41 }
7ad87df9 42 $c->request->data($rdata);
43 } else {
eccb2137 44 $c->log->debug(
d4611771 45 'I would have deserialized, but there was nothing in the body!')
46 if $c->debug;
7ad87df9 47 }
e601adda 48 return 1;
eccb2137 49}
7ad87df9 50
511;