Use strict and warnings
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / Serialize / JSONP.pm
1 package Catalyst::Action::Serialize::JSONP;
2 use strict;
3 use warnings;
4 use MRO::Compat;
5
6 use base 'Catalyst::Action::Serialize::JSON';
7
8 sub 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
25 sub 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
34 1;