apply RequestRole::REST instead of doing Request::REST->_insert_self_info
[catagits/Catalyst-Action-REST.git] / lib / Catalyst / Action / REST.pm
index 79e8ef3..ee79592 100644 (file)
@@ -12,19 +12,15 @@ use warnings;
 
 use base 'Catalyst::Action';
 use Class::Inspector;
+use Moose::Util qw(does_role);
 use Catalyst;
-use Catalyst::Request::REST;
+use Catalyst::RequestRole::REST;
 use Catalyst::Controller::REST;
+use namespace::clean -except => 'meta';
 
 BEGIN { require 5.008001; }
 
-our $VERSION = '0.67';
-
-# This is wrong in several ways. First, there's no guarantee that
-# Catalyst.pm has not been subclassed. Two, there's no guarantee that
-# the user isn't already using their request subclass.
-Catalyst->request_class('Catalyst::Request::REST')
-  unless Catalyst->request_class->isa('Catalyst::Request::REST');
+our $VERSION = '0.71';
 
 =head1 NAME
 
@@ -88,6 +84,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 $method     = $self->name . "_" . uc( $c->request->method );
     if ( $controller->can($method) ) {