# join args with '/', or a blank string
my $args = join('/', grep { defined($_) } @args);
$args =~ s/\?/%3F/g; # STUPID STUPID SPECIAL CASE
-# $args =~ s!^/+!!;
+ $args =~ s!^/+!!;
my $base = $c->req->base;
my $class = ref($base);
$base =~ s{(?<!/)$}{/};
sub get_actions { my $c = shift; $c->dispatcher->get_actions( $c, @_ ) }
-=head2 $c->handle_request( $class, @arguments )
+=head2 $app->handle_request( @arguments )
Called to handle each HTTP request.
# See https://issues.apache.org/bugzilla/show_bug.cgi?id=35256
# Here we try to resurrect the original encoded URI from REQUEST_URI.
my $path_info = $ENV{PATH_INFO};
-# if (my $req_uri = $ENV{REQUEST_URI}) {
-# $req_uri =~ s/^\Q$base_path\E//;
-# $req_uri =~ s/\?.*$//;
-# if ($req_uri && $req_uri ne '/') {
- # This means that REQUEST_URI needs information from PATH_INFO
- # prepending to it to be useful, otherwise the sub path which is
- # being redirected to becomes the app base address which is
- # incorrect.
-# my ($match) = $req_uri =~ m{^(/?[^/]+)};
-# my ($path_info_part) = $path_info =~ m|^(.*?\Q$match\E)|;
-# substr($req_uri, 0, length($match), $path_info_part)
-# if $path_info_part;
-# $path_info = $req_uri;
-# }
-# }
- $path_info =~ s/%2F/%252F/g;
+ if ($c->config->{rfc3875_paths}) {
+ if (my $req_uri = $ENV{REQUEST_URI}) {
+ $req_uri =~ s/^\Q$base_path\E//;
+ $req_uri =~ s/\?.*$//;
+ if ($req_uri && $req_uri ne '/') {
+ # This means that REQUEST_URI needs information from PATH_INFO
+ # prepending to it to be useful, otherwise the sub path which is
+ # being redirected to becomes the app base address which is
+ # incorrect.
+ # FIXME - This stuff is shit, we should get REDIRECT_URI, right?
+ my ($match) = $req_uri =~ m{^(/?[^/]+)};
+ my ($path_info_part) = $path_info =~ m|^(.*?\Q$match\E)|;
+ substr($req_uri, 0, length($match), $path_info_part)
+ if $path_info_part;
+ $path_info = $req_uri;
+ }
+ }
+ }
+
# set the request URI
- warn("Base path $base_path, path_info $path_info");
my $path = $base_path . ( $path_info || '' );
$path =~ s{^/+}{};
- $base_path .= '/' unless $base_path =~ m{/$};
# Using URI directly is way too slow, so we construct the URLs manually
my $uri_class = "URI::$scheme";
my $response;
- ok( $response = request("http://localhost/args/args/$path"), "Requested args for path $path");
+ ok( $response = request("http://localhost/args/args/$path"), "Requested /args/args/$path");
is( $response->content, $test, "$test as args" );
undef $response;
- ok( $response = request("http://localhost/args/params/$path"), "Requested params for path $path");
+ ok( $response = request("http://localhost/args/params/$path"), "Requested /args/params/$path");
- is( $response->content, $test, "$test as params" );
+ is( $response->content, $test, "response content $test as params" );
undef $response;