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