Change all classes to Moose
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Deserialize / JSON.pm
1 package Catalyst::Action::Deserialize::JSON;
2
3 use Moose;
4 use namespace::autoclean;
5
6 extends 'Catalyst::Action';
7 use JSON qw( decode_json );
8
9 sub execute {
10     my $self = shift;
11     my ( $controller, $c, $test ) = @_;
12
13     my $body = $c->request->body;
14     my $rbody;
15
16     if ($body) {
17         while (my $line = <$body>) {
18             $rbody .= $line;
19         }
20     }
21
22     if ( $rbody ) {
23         my $rdata = eval { decode_json( $rbody ) };
24         if ($@) {
25             return $@;
26         }
27         $c->request->data($rdata);
28     } else {
29         $c->log->debug(
30             'I would have deserialized, but there was nothing in the body!')
31             if $c->debug;
32     }
33     return 1;
34 }
35
36 1;