Use strict and warnings
[catagits/Catalyst-Action-Serialize-Data-Serializer.git] / lib / Catalyst / Action / Serialize / JSONP.pm
CommitLineData
d0d292d4 1package Catalyst::Action::Serialize::JSONP;
aeb7a0ae 2use strict;
3use warnings;
4use MRO::Compat;
5
d0d292d4 6use base 'Catalyst::Action::Serialize::JSON';
7
8sub execute {
9 my $self = shift;
10 my ($controller, $c) = @_;
11
12 my $callback_key = (
13 $controller->{'serialize'} ?
14 $controller->{'serialize'}->{'callback_key'} :
15 $controller->{'callback_key'}
16 ) || 'callback';
17
18 if ($c->req->param($callback_key)) {
19 $self->{_jsonp_callback} = $c->req->param($callback_key);
20 $c->res->content_type('text/javascript');
21 }
22 $self->next::method($controller, $c);
23}
24
25sub serialize {
26 my $self = shift;
27 my $json = $self->next::method(@_);
28 if ($self->{_jsonp_callback}) {
29 $json = $self->{_jsonp_callback}.'('.$json.');';
30 }
31 return $json;
32}
33
341;