r13213@tomas-dorans-macbook-pro (orig r13177): ajgb | 2010-04-21 11:10:51 +0000
Fix not stripping backslashes in DispatchType::Regex::uri_for_action
r15483@tomas-dorans-macbook-pro (orig r13190): rafl | 2010-04-28 22:54:04 +0000
Make sure path_to returns an instance of the right Path::Class class.
r15484@tomas-dorans-macbook-pro (orig r13191): edenc | 2010-04-28 23:29:02 +0000
minor documentation fix for handle_request
r15489@tomas-dorans-macbook-pro (orig r13193): rafl | 2010-05-02 23:16:25 +0000
Allow parameterized roles to be applied as plugins.
r15490@tomas-dorans-macbook-pro (orig r13194): t0m | 2010-05-02 23:27:43 +0000
Back out crazy heuristics
# 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) {
- # Note that if REQUEST_URI doesn't start with a /, then the user
- # is probably using mod_rewrite or something to rewrite requests
- # into a sub-path of their application..
- # 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.
- if (substr($req_uri, 0, 1) ne '/') {
- 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;
+ 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) {
+ # Note that if REQUEST_URI doesn't start with a /, then the user
+ # is probably using mod_rewrite or something to rewrite requests
+ # into a sub-path of their application..
+ # 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.
+ if (substr($req_uri, 0, 1) ne '/') {
+ 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 = $req_uri;
}
}
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;
SCRIPT_NAME => '/comics/dispatch.cgi',
REQUEST_URI => '/comics/',
);
- is ''.$r->uri, 'http://www.foo.com/comics/';
- is ''.$r->base, 'http://www.foo.com/comics/';
+ is ''.$r->uri, 'http://www.foo.com/comics/', 'uri is correct';
+ is ''.$r->base, 'http://www.foo.com/comics/', 'base is correct';
}
# mod_rewrite to sub path under app root for non / based app
SCRIPT_NAME => '/~bobtfish/Gitalist/script/gitalist.cgi',
REQUEST_URI => '/~bobtfish/Gitalist/script/gitalist.cgi/%252F/%252F',
);
- is ''.$r->uri, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/%252F/%252F';
- is ''.$r->base, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/';
+ is ''.$r->uri, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/%252F/%252F', 'uri correct';
+ is ''.$r->base, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/', 'base correct';
}
# Using rewrite rules to ask for a sub-path in your app.
SCRIPT_NAME => '/oslobilder/',
REQUEST_URI => '/oslobilder/%22foo%22',
);
- is ''.$r->path, '%22foo%22';
- is ''.$r->uri, 'http://www.foo.com/oslobilder/%22foo%22';
- is ''.$r->base, 'http://www.foo.com/oslobilder/';
+ is ''.$r->path, '%22foo%22', 'path correct';
+ is ''.$r->uri, 'http://www.foo.com/oslobilder/%22foo%22', 'uri correct';
+ is ''.$r->base, 'http://www.foo.com/oslobilder/', 'base correct';
}
{
SCRIPT_NAME => '/tx',
REQUEST_URI => '/login',
);
- is ''.$r->path, 'auth/login';
- is ''.$r->uri, 'http://www.foo.com/tx/auth/login';
- is ''.$r->base, 'http://www.foo.com/tx/';
+ is ''.$r->path, 'auth/login', 'path correct';
+ is ''.$r->uri, 'http://www.foo.com/tx/auth/login', 'uri correct';
+ is ''.$r->base, 'http://www.foo.com/tx/', 'base correct';
}
# test req->base and c->uri_for work correctly after an internally redirected request
our $VERSION = '0.01';
-TestApp->config( name => 'TestApp', root => '/some/dir' );
+TestApp->config( name => 'TestApp', root => '/some/dir', rfc3875_paths => 1 );
if ($::setup_leakchecker && eval { Class::MOP::load_class('CatalystX::LeakChecker'); 1 }) {
with 'CatalystX::LeakChecker';