From: nebulous Date: Mon, 11 Jan 2010 18:29:41 +0000 (-0500) Subject: Added a Moose X-Git-Tag: 0.81~5 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-REST.git;a=commitdiff_plain;h=9ffbd15626ce11a2c727169d5b0d382f4386d486 Added a Moose --- diff --git a/lib/Catalyst/Action/Serialize/JSONP.pm b/lib/Catalyst/Action/Serialize/JSONP.pm index 5cae844..4354ce2 100644 --- a/lib/Catalyst/Action/Serialize/JSONP.pm +++ b/lib/Catalyst/Action/Serialize/JSONP.pm @@ -1,11 +1,9 @@ package Catalyst::Action::Serialize::JSONP; -use strict; -use warnings; -use MRO::Compat; +use Moose; +use namespace::autoclean; +BEGIN {extends 'Catalyst::Action::Serialize::JSON'}; -use base 'Catalyst::Action::Serialize::JSON'; - -sub execute { +after 'execute' => sub { my $self = shift; my ($controller, $c) = @_; @@ -15,20 +13,15 @@ sub execute { $controller->{'callback_key'} ) || 'callback'; - if ($c->req->param($callback_key)) { - $self->{_jsonp_callback} = $c->req->param($callback_key); - $c->res->content_type('text/javascript'); - } - $self->next::method($controller, $c); -} - -sub serialize { - my $self = shift; - my $json = $self->next::method(@_); - if ($self->{_jsonp_callback}) { - $json = $self->{_jsonp_callback}.'('.$json.');'; + my $callback_value = $c->req->param($callback_key); + if ($callback_value) { + if ($callback_value =~ /^\w+/) { + $c->res->content_type('text/javascript'); + $c->res->output($callback_value.'('.$c->res->output().');'); + } else { + warn 'Callback: '.$callback_value.' will not generate valid Javascript. Falling back to JSON output'; + } } - return $json; -} +}; 1;