Bump versions for release
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / JSON.pm
1 package Catalyst::Action::Serialize::JSON;
2
3 use Moose;
4 use namespace::autoclean;
5
6 extends 'Catalyst::Action';
7 use JSON ();
8
9 our $VERSION = '0.82';
10 $VERSION = eval $VERSION;
11
12 has encoder => (
13    is => 'ro',
14    lazy_build => 1,
15 );
16
17 sub _build_encoder {
18    my $self = shift;
19    return JSON->new->utf8->convert_blessed;
20 }
21
22 sub execute {
23     my $self = shift;
24     my ( $controller, $c ) = @_;
25
26     my $stash_key = (
27             $controller->{'serialize'} ?
28                 $controller->{'serialize'}->{'stash_key'} :
29                 $controller->{'stash_key'}
30         ) || 'rest';
31     my $output = $self->serialize( $c->stash->{$stash_key} );
32     $c->response->output( $output );
33     return 1;
34 }
35
36 sub serialize {
37     my $self = shift;
38     my $data = shift;
39     $self->encoder->encode( $data );
40 }
41
42 1;