[Catalyst-commits] r7680 - in CatalystX-CRUD/CatalystX-CRUD/trunk: . lib/CatalystX/CRUD

karpet at dev.catalyst.perl.org karpet at dev.catalyst.perl.org
Mon May 5 21:50:59 BST 2008


Author: karpet
Date: 2008-05-05 21:50:59 +0100 (Mon, 05 May 2008)
New Revision: 7680

Modified:
   CatalystX-CRUD/CatalystX-CRUD/trunk/Changes
   CatalystX-CRUD/CatalystX-CRUD/trunk/lib/CatalystX/CRUD/REST.pm
Log:
support REST::ForBrowser param name

Modified: CatalystX-CRUD/CatalystX-CRUD/trunk/Changes
===================================================================
--- CatalystX-CRUD/CatalystX-CRUD/trunk/Changes	2008-05-05 20:03:56 UTC (rev 7679)
+++ CatalystX-CRUD/CatalystX-CRUD/trunk/Changes	2008-05-05 20:50:59 UTC (rev 7680)
@@ -116,4 +116,6 @@
         * change default create() method in Controller to call methods directly instead of forward()ing.
         * add create() method to REST that just redirects to create_form().
         * change from 'use NEXT' to 'use Class::C3'
-       
+        * added support for "x-tunneled-method" param to REST controller in addition to "_http_method". 
+          This is for compat with Catalyst::Request::REST::ForBrowsers.
+

Modified: CatalystX-CRUD/CatalystX-CRUD/trunk/lib/CatalystX/CRUD/REST.pm
===================================================================
--- CatalystX-CRUD/CatalystX-CRUD/trunk/lib/CatalystX/CRUD/REST.pm	2008-05-05 20:03:56 UTC (rev 7679)
+++ CatalystX-CRUD/CatalystX-CRUD/trunk/lib/CatalystX/CRUD/REST.pm	2008-05-05 20:50:59 UTC (rev 7680)
@@ -143,24 +143,24 @@
 =head2 req_method( I<context> )
 
 Internal method. Returns the HTTP method name, allowing
-POST to serve as a tunnel when the C<_http_method> param
-is present. Since most browsers do not support PUT or DELETE
-HTTP methods, you can use the C<_http_method> param to tunnel
+POST to serve as a tunnel when the C<_http_method> or
+C<x-tunneled-method> param is present. 
+Since most browsers do not support PUT or DELETE
+HTTP methods, you can use the special param to tunnel
 the desired HTTP method and then POST instead.
 
 =cut
 
+my @tunnel_param_names = qw( x-tunneled-method _http_method );
+
 sub req_method {
     my ( $self, $c ) = @_;
     if ( uc( $c->req->method ) eq 'POST' ) {
-        return exists $c->req->params->{'_http_method'}
-            ? uc(
-            ref $c->req->params->{'_http_method'}
-            ? $c->req->params->{'_http_method'}->[0]
-            : $c->req->params->{'_http_method'}
-            )
-            : 'POST';
-
+        for my $name (@tunnel_param_names) {
+            if ( exists $c->req->params->{$name} ) {
+                return uc( $c->req->params->{$name} );
+            }
+        }
     }
     return uc( $c->req->method );
 }




More information about the Catalyst-commits mailing list