[Catalyst-commits] r13192 - in Catalyst-Runtime/5.80/branches/fix_request_uri: lib lib/Catalyst/Engine t/aggregate t/lib

t0m at dev.catalyst.perl.org t0m at dev.catalyst.perl.org
Sun May 2 22:26:22 GMT 2010


Author: t0m
Date: 2010-05-02 23:26:22 +0100 (Sun, 02 May 2010)
New Revision: 13192

Modified:
   Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst.pm
   Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst/Engine/CGI.pm
   Catalyst-Runtime/5.80/branches/fix_request_uri/t/aggregate/live_component_controller_args.t
   Catalyst-Runtime/5.80/branches/fix_request_uri/t/lib/TestApp.pm
Log:
Revert to old behaviour, allow config for new behaviour. Config option name is rubbish, needs fixing

Modified: Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst/Engine/CGI.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst/Engine/CGI.pm	2010-04-28 23:29:02 UTC (rev 13191)
+++ Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst/Engine/CGI.pm	2010-05-02 22:26:22 UTC (rev 13192)
@@ -154,27 +154,28 @@
     # 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";

Modified: Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst.pm	2010-04-28 23:29:02 UTC (rev 13191)
+++ Catalyst-Runtime/5.80/branches/fix_request_uri/lib/Catalyst.pm	2010-05-02 22:26:22 UTC (rev 13192)
@@ -1321,7 +1321,7 @@
     # 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{(?<!/)$}{/};
@@ -1890,7 +1890,7 @@
 
 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.
 

Modified: Catalyst-Runtime/5.80/branches/fix_request_uri/t/aggregate/live_component_controller_args.t
===================================================================
--- Catalyst-Runtime/5.80/branches/fix_request_uri/t/aggregate/live_component_controller_args.t	2010-04-28 23:29:02 UTC (rev 13191)
+++ Catalyst-Runtime/5.80/branches/fix_request_uri/t/aggregate/live_component_controller_args.t	2010-05-02 22:26:22 UTC (rev 13192)
@@ -73,15 +73,15 @@
 
         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;
 

Modified: Catalyst-Runtime/5.80/branches/fix_request_uri/t/lib/TestApp.pm
===================================================================
--- Catalyst-Runtime/5.80/branches/fix_request_uri/t/lib/TestApp.pm	2010-04-28 23:29:02 UTC (rev 13191)
+++ Catalyst-Runtime/5.80/branches/fix_request_uri/t/lib/TestApp.pm	2010-05-02 22:26:22 UTC (rev 13192)
@@ -18,7 +18,7 @@
 
 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';




More information about the Catalyst-commits mailing list