X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerialize%2FJSON.pm;h=8af34287c8807fb699752392d47e9a5b3d54ce6a;hb=29f9721bfe883351594c7d664e3778a36ceaeb27;hp=2a65e2cf8da2fb1c08b4272a219a3630cd5a92de;hpb=be3c588afb1dd6d6c8e6171c01c3d38afa75d6d5;p=catagits%2FCatalyst-Action-Serialize-Data-Serializer.git diff --git a/lib/Catalyst/Action/Serialize/JSON.pm b/lib/Catalyst/Action/Serialize/JSON.pm index 2a65e2c..8af3428 100644 --- a/lib/Catalyst/Action/Serialize/JSON.pm +++ b/lib/Catalyst/Action/Serialize/JSON.pm @@ -1,36 +1,44 @@ -# -# Catlyst::Action::Serialize::JSON.pm -# Created by: Adam Jacob, Marchex, -# 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.94'; +$VERSION = eval $VERSION; -use base 'Catalyst::Action'; -use JSON::Syck; +has encoder => ( + is => 'ro', + lazy_build => 1, +); + +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 ); +} + +__PACKAGE__->meta->make_immutable; + 1;