remove hardcoded version strings
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Deserialize / YAML.pm
CommitLineData
256c894f 1package Catalyst::Action::Deserialize::YAML;
2
930013e6 3use Moose;
4use namespace::autoclean;
1bb5ad32 5use Scalar::Util qw(openhandle);
256c894f 6
930013e6 7extends 'Catalyst::Action';
256c894f 8use YAML::Syck;
256c894f 9
cc188065 10# VERSION
6edee33e 11
256c894f 12sub execute {
13 my $self = shift;
14 my ( $controller, $c, $test ) = @_;
eccb2137 15
7ad87df9 16 my $body = $c->request->body;
17 if ($body) {
1bb5ad32 18
19 my $rbody = '';
20
21 if(openhandle $body) {
22 seek($body, 0, 0); # in case something has already read from it
23 while ( defined( my $line = <$body> ) ) {
24 $rbody .= $line;
25 }
26 } else {
27 $rbody = $body;
28 }
29
e601adda 30 my $rdata;
31 eval {
1bb5ad32 32 $rdata = Load( $rbody );
e601adda 33 };
34 if ($@) {
35 return $@;
36 }
256c894f 37 $c->request->data($rdata);
256c894f 38 } else {
eccb2137 39 $c->log->debug(
faf5c20b 40 'I would have deserialized, but there was nothing in the body!')
41 if $c->debug;
256c894f 42 }
e601adda 43 return 1;
eccb2137 44}
256c894f 45
24748286 46__PACKAGE__->meta->make_immutable;
47
256c894f 481;