|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 package Plack::Middleware::PathToQuery;  | 
| 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
1832981
 | 
 use strict;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
37
 | 
    | 
| 
4
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
7
 | 
 use warnings;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
51
 | 
    | 
| 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # ABSTRACT: Prepend converted PATH_INFO to QUERY_STRING  | 
| 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our $VERSION = 'v0.0.1'; # VERSION  | 
| 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
5
 | 
 use parent qw(Plack::Middleware);  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
1
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
9
 | 
    | 
| 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
7875
 | 
 use URI::Escape;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
486
 | 
    | 
| 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub call  | 
| 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
15
 | 
10
 | 
 
 | 
 
 | 
  
10
  
 | 
  
1
  
 | 
1748853
 | 
 	my ($self, $env) = @_;  | 
| 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
17
 | 
10
 | 
 
 | 
  
 33
  
 | 
 
 | 
 
 | 
136
 | 
 	my $DEBUG = exists $self->{debug} && $self->{debug};  | 
| 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
19
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
28
 | 
 	$DEBUG and $env->{'psgi.errors'}->print('PATH_INFO: '.$env->{PATH_INFO}."\n");  | 
| 
20
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
68
 | 
 	$DEBUG and $env->{'psgi.errors'}->print('QUERY_STRING: '.$env->{QUERY_STRING}."\n");  | 
| 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
22
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
14
 | 
 	my @pairs;  | 
| 
23
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
29
 | 
 	if($env->{PATH_INFO} ne '') {  | 
| 
24
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
18
 | 
 		my $path = $env->{PATH_INFO};  | 
| 
25
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
42
 | 
 		$path =~ s@^/@@;  | 
| 
26
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
48
 | 
 		my @components = split '/', $path;  | 
| 
27
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
21
 | 
 		for my $component (@components) {  | 
| 
28
 | 
17
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
247
 | 
 			if($component =~ s/^([^-]+)-//) {  | 
| 
29
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
30
 | 
 				push @pairs, uri_escape($1).'='.uri_escape($component);  | 
| 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			} else {  | 
| 
31
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
31
 | 
 				push @pairs, uri_escape($component).'=';  | 
| 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 			}  | 
| 
33
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		}  | 
| 
34
 | 
10
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
179
 | 
 		push @pairs, $env->{QUERY_STRING} if $env->{QUERY_STRING} ne '';  | 
| 
35
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
26
 | 
 		$env->{QUERY_STRING} = join '&', @pairs;  | 
| 
36
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
22
 | 
 		$env->{PATH_INFO} = '';  | 
| 
37
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
38
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
39
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
23
 | 
 	$DEBUG and $env->{'psgi.errors'}->print('PATH_INFO: '.$env->{PATH_INFO}."\n");  | 
| 
40
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
18
 | 
 	$DEBUG and $env->{'psgi.errors'}->print('QUERY_STRING: '.$env->{QUERY_STRING}."\n");  | 
| 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
42
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
43
 | 
 	return $self->app->($env);  | 
| 
43
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
44
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
45
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 1;  | 
| 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
47
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __END__  |