Fix some weirdo indentation
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / REST.pm
index c862072..0009f02 100644 (file)
@@ -10,14 +10,14 @@ use Catalyst::Controller::REST;
 
 BEGIN { require 5.008001; }
 
-our $VERSION = '0.81';
+our $VERSION = '0.88';
 $VERSION = eval $VERSION;
 
-sub new {
-  my $class  = shift;
-  my $config = shift;
-  Catalyst::Request::REST->_insert_self_into( $config->{class} );
-  return $class->next::method($config, @_);
+sub BUILDARGS {
+    my $class  = shift;
+    my $config = shift;
+    Catalyst::Request::REST->_insert_self_into( $config->{class} );
+    return $class->SUPER::BUILDARGS($config, @_);
 }
 
 =head1 NAME
@@ -92,12 +92,13 @@ sub dispatch {
 
     # 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 } );
-        return $c->forward( $code,  $c->req->args );
-     } elsif ($code = $controller->can($rest_method)) {
-        # Exceute normal action
-        $c->execute( $self->class, $self, @{ $c->req->args } );
-        $name = $rest_method;
+        $name = $rest_method; # Stash name and code to run 'foo_GET' like an action below.
     }
 
     # Generic handling for foo_OPTIONS
@@ -150,6 +151,8 @@ sub _return_not_implemented {
           . $c->uri_for( $method_name ) );
 }
 
+__PACKAGE__->meta->make_immutable;
+
 1;
 
 =back
@@ -160,7 +163,7 @@ You likely want to look at L<Catalyst::Controller::REST>, which implements a
 sensible set of defaults for a controller doing REST.
 
 This class automatically adds the L<Catalyst::TraitFor::Request::REST> role to
-your request class.  If you're writing a webapp which provides RESTful
+your request class.  If you're writing a web application which provides RESTful
 responses and still needs to accommodate web browsers, you may prefer to use
 L<Catalyst::TraitFor::Request::REST::ForBrowsers> instead.