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