[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