X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FREST.pm;h=5ee7ed9d897d030144bb0fe467e911d901e2b9e8;hb=5cb0b36f518a1f5e9c2225eec3187416319e8eec;hp=db29658b155c219825c17e5b9860063d125f0096;hpb=b0c2ebd443419f29a78423e78db0630f88ccc437;p=catagits%2FCatalyst-Action-REST.git diff --git a/lib/Catalyst/Action/REST.pm b/lib/Catalyst/Action/REST.pm index db29658..5ee7ed9 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 = '1.02'; +our $VERSION = '1.11'; $VERSION = eval $VERSION; sub BUILDARGS { @@ -61,7 +61,8 @@ by implementing a custom 405 handler like so: If you do not provide an _OPTIONS subroutine, we will automatically respond with a 200 OK. The "Allow" header will be populated with the list of -implemented request methods. +implemented request methods. If you do not provide an _HEAD either, we will +auto dispatch to the _GET one in case it exists. It is likely that you really want to look at L, which brings this class together with automatic Serialization of requests @@ -130,7 +131,9 @@ sub _dispatch_rest_method { || sub { $self->_return_not_implemented($self->name, @_) }; }, }; - my $respond = ($code_action->{$req->method} + my ( $http_method, $action_name ) = ( $rest_method, $self->name ); + $http_method =~ s{\Q$action_name\E\_}{}; + my $respond = ($code_action->{$http_method} || $code_action->{'default'})->(); return $respond unless $name; } @@ -149,8 +152,13 @@ sub _dispatch_rest_method { sub get_allowed_methods { my ( $self, $controller, $c, $name ) = @_; my $class = ref($controller) ? ref($controller) : $controller; - my $methods = Class::Inspector->methods($class); - return map { /^$name\_(.+)$/ } @$methods; + my $methods = { + map { /^$name\_(.+)$/ ? ( $1 => 1 ) : () } + @{ Class::Inspector->methods($class) } + }; + $methods->{'HEAD'} = 1 if $methods->{'GET'}; + delete $methods->{'not_implemented'}; + return sort keys %$methods; }; sub _return_options { @@ -244,6 +252,8 @@ Gerv http://www.gerv.net/ Colin Newell +Wallace Reis Ewreis@cpan.orgE + =head1 COPYRIGHT Copyright (c) 2006-2012 the above named AUTHOR and CONTRIBUTORS