Commit | Line | Data |
d0d292d4 |
1 | package Catalyst::Action::Serialize::JSONP; |
9ffbd156 |
2 | use Moose; |
3 | use namespace::autoclean; |
4 | BEGIN {extends 'Catalyst::Action::Serialize::JSON'}; |
aeb7a0ae |
5 | |
9ffbd156 |
6 | after 'execute' => sub { |
d0d292d4 |
7 | my $self = shift; |
8 | my ($controller, $c) = @_; |
9 | |
10 | my $callback_key = ( |
11 | $controller->{'serialize'} ? |
12 | $controller->{'serialize'}->{'callback_key'} : |
13 | $controller->{'callback_key'} |
14 | ) || 'callback'; |
15 | |
9ffbd156 |
16 | my $callback_value = $c->req->param($callback_key); |
17 | if ($callback_value) { |
18 | if ($callback_value =~ /^\w+/) { |
19 | $c->res->content_type('text/javascript'); |
20 | $c->res->output($callback_value.'('.$c->res->output().');'); |
21 | } else { |
22 | warn 'Callback: '.$callback_value.' will not generate valid Javascript. Falling back to JSON output'; |
23 | } |
d0d292d4 |
24 | } |
9ffbd156 |
25 | }; |
d0d292d4 |
26 | |
27 | 1; |