File Coverage

blib/lib/Ark/Plugin/ReproxyCallback.pm
Criterion Covered Total %
statement 15 26 57.6
branch 0 8 0.0
condition n/a
subroutine 5 6 83.3
pod 0 1 0.0
total 20 41 48.7


line stmt bran cond sub pod time code
1             package Ark::Plugin::ReproxyCallback;
2 1     1   680 use 5.008001;
  1         3  
  1         38  
3 1     1   5 use strict;
  1         2  
  1         29  
4 1     1   5 use warnings;
  1         15  
  1         46  
5              
6             our $VERSION = "0.02";
7              
8 1     1   934 use Ark::Plugin;
  1         42220  
  1         7  
9              
10 1     1   2299 use URI;
  1         4449  
  1         262  
11              
12             sub reproxy {
13 0     0 0   my $c = shift;
14 0 0         my $args = @_ > 1 ? {@_} : $_[0];
15 0           my $res = $c->response;
16              
17 0 0         if (my $req = $args->{request}) {
18 0           $res->header('X-Reproxy-Method' => $req->method);
19 0           $res->header('X-Reproxy-URL' => $req->uri);
20 0           for my $h ($req->headers->header_field_names) {
21 0           $res->header('X-Reproxy-Header-' . $h => $req->header($h));
22             }
23             }
24              
25 0 0         if (my $callback = $args->{callback}) {
26 0           $res->header('X-Reproxy-Callback' => $callback);
27             }
28              
29 0 0         $res->body('') unless $res->has_body;
30             }
31              
32             after prepare_action => sub {
33             my $c = shift;
34              
35             if (my $uri = $c->request->header('X-Reproxy-Original-URL')) {
36             $c->request->header('X-Reproxy-Callback-URL' => $c->request->uri );
37             $c->request->uri(URI->new($uri));
38             }
39             };
40              
41             1;
42             __END__