Merge master up
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / REST.pm
index c9d336e..276d655 100644 (file)
@@ -3,30 +3,22 @@
 # Created by: Adam Jacob, Marchex, <adam@hjksolutions.com>
 # Created on: 10/12/2006 03:00:32 PM PDT
 #
-# $Id$
 
 package Catalyst::Action::REST;
-
-use strict;
-use warnings;
-
-use base 'Catalyst::Action';
+use Moose;
 use Class::Inspector;
-use Catalyst::Request::REST;
+use Moose::Util qw(does_role);
+use Catalyst::RequestRole::REST;
 use Catalyst::Controller::REST;
+use namespace::clean -except => 'meta';
+
+extends 'Catalyst::Action';
 
 BEGIN { require 5.008001; }
 
 our $VERSION = '0.76';
 $VERSION = eval $VERSION;
 
-sub new {
-  my $class  = shift;
-  my $config = shift;
-  Catalyst::Request::REST->_insert_self_into( $config->{class} );
-  return $class->next::method($config, @_);
-}
-
 =head1 NAME
 
 Catalyst::Action::REST - Automated REST Method Dispatching
@@ -89,6 +81,9 @@ sub dispatch {
     my $self = shift;
     my $c    = shift;
 
+    Catalyst::RequestRole::REST->meta->apply($c->request)
+        unless does_role($c->request, 'Catalyst::RequestRole::REST');
+
     my $controller = $c->component( $self->class );
     my $rest_method = $self->name . "_" . uc( $c->request->method );