Bump versions for release
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / JSON.pm
index a67853d..764ba5f 100644 (file)
@@ -1,36 +1,42 @@
-#
-# Catlyst::Action::Serialize::JSON.pm
-# Created by: Adam Jacob, Marchex, <adam@marchex.com>
-# Created on: 10/12/2006 03:00:32 PM PDT
-#
-# $Id$
-
 package Catalyst::Action::Serialize::JSON;
 
-use strict;
-use warnings;
+use Moose;
+use namespace::autoclean;
+
+extends 'Catalyst::Action';
+use JSON ();
+
+our $VERSION = '0.82';
+$VERSION = eval $VERSION;
+
+has encoder => (
+   is => 'ro',
+   lazy_build => 1,
+);
 
-use base 'Catalyst::Action';
-use JSON::Syck;
+sub _build_encoder {
+   my $self = shift;
+   return JSON->new->utf8->convert_blessed;
+}
 
 sub execute {
     my $self = shift;
     my ( $controller, $c ) = @_;
 
     my $stash_key = (
-            $controller->config->{'serialize'} ?
-                $controller->config->{'serialize'}->{'stash_key'} :
-                $controller->config->{'stash_key'} 
+            $controller->{'serialize'} ?
+                $controller->{'serialize'}->{'stash_key'} :
+                $controller->{'stash_key'}
         ) || 'rest';
-    my $output;
-    eval {
-        $output = JSON::Syck::Dump($c->stash->{$stash_key});
-    };
-    if ($@) {
-        return $@;
-    }
+    my $output = $self->serialize( $c->stash->{$stash_key} );
     $c->response->output( $output );
     return 1;
 }
 
+sub serialize {
+    my $self = shift;
+    my $data = shift;
+    $self->encoder->encode( $data );
+}
+
 1;