remove hardcoded version strings
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Deserialize / YAML.pm
1 package Catalyst::Action::Deserialize::YAML;
2
3 use Moose;
4 use namespace::autoclean;
5 use Scalar::Util qw(openhandle);
6
7 extends 'Catalyst::Action';
8 use YAML::Syck;
9
10 # VERSION
11
12 sub execute {
13     my $self = shift;
14     my ( $controller, $c, $test ) = @_;
15
16     my $body = $c->request->body;
17     if ($body) {
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
30         my $rdata;
31         eval {
32             $rdata = Load( $rbody );
33         };
34         if ($@) {
35             return $@;
36         }
37         $c->request->data($rdata);
38     } else {
39         $c->log->debug(
40             'I would have deserialized, but there was nothing in the body!')
41             if $c->debug;
42     }
43     return 1;
44 }
45
46 __PACKAGE__->meta->make_immutable;
47
48 1;