X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FREST.pm;h=04454223f1de990aec7730b197bae58c7c99420c;hb=3c4306f26628d82044c933aa391c346440fdfcdf;hp=8568799fdc6f32d001430046358462bcafe76837;hpb=0f656d06e928bdfacc6c5b65dff87a148299565d;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/REST.pm b/lib/Catalyst/Action/REST.pm index 8568799..0445422 100644 --- a/lib/Catalyst/Action/REST.pm +++ b/lib/Catalyst/Action/REST.pm @@ -10,7 +10,7 @@ use Catalyst::Controller::REST; BEGIN { require 5.008001; } -our $VERSION = '0.95'; +our $VERSION = '1.01'; $VERSION = eval $VERSION; sub BUILDARGS { @@ -99,14 +99,14 @@ sub _dispatch_rest_method { my ($code, $name); + # Execute normal 'foo' action. + $c->execute( $self->class, $self, @{ $c->req->args } ); + # Common case, for foo_GET etc if ( $code = $controller->action_for($rest_method) ) { - $c->execute( $self->class, $self, @{ $c->req->args } ); # Execute normal 'foo' action. return $c->forward( $code, $c->req->args ); # Forward to foo_GET if it's an action } elsif ($code = $controller->can($rest_method)) { - # Execute normal action - $c->execute( $self->class, $self, @{ $c->req->args } ); $name = $rest_method; # Stash name and code to run 'foo_GET' like an action below. } @@ -127,8 +127,11 @@ sub _dispatch_rest_method { # localise stuff so we can dispatch the action 'as normal, but get # different stats shown, and different code run. + # Also get the full path for the action, and make it look like a forward local $self->{code} = $code; - local $self->{reverse} = $name; + my @name = split m{/}, $self->reverse; + $name[-1] = $name; + local $self->{reverse} = "-> " . join('/', @name); $c->execute( $self->class, $self, @{ $c->req->args } ); } @@ -226,6 +229,10 @@ J. Shirley Ejshirley@gmail.comE Gavin Henry Eghenry@surevoip.co.ukE +Gerv http://www.gerv.net/ + +Colin Newell + =head1 COPYRIGHT Copyright (c) 2006-2012 the above named AUTHOR and CONTRIBUTORS